User:Simon Villeneuve/SPARQL

From Wikidata
Jump to navigation Jump to search

En SPARQL, il faut maîtriser d'abord le bleu, puis le vert et ensuite le rouge.

Une description générale du contenu d'un élément particulier peut-être obtenu à l'aide de la requête suivante :

DESCRIBE wd:<NUMÉRO DE L'ÉLÉMENT>
Try it!

Généralités[edit]

Diagramme de Venn traduits en SPARQL[1]
diagramme de Venn forme mathématique SPARQL
And A.
B.
A.
FILTER NOT EXISTS{ B. }
A.
OPTIONAL{ B. }
Or { A. } UNION { B. }
Requêtes complexes[2]

Obtenir les qualificatifs ou les références des propriétés d'un élément est difficile jusqu'à ce que le déclic se fasse. La clé (du moins, pour moi) est le diagramme ci-contre. Vous devez le fixer jusqu'à ce qu'il fasse sens, peu importe le temps que ça prend :)

Obtenir la valeur d'une propriété est facile. Tu demande le report service pour la valeur wdt:. Vous pouvez voir ceci sur le diagramme en démarrant sur le cercle « item » et suivant la flèche « wdt: » pour arriver sur « simple value ». Vous pouvez également voir sur le même diagramme qu'à partir de « simple value », vous ne pouvez aller nulle part. C'est un cul de sac.

Si vous désirez un qualificatif de propriété, vous devez demander une valeur pq:. Pour faire ça, il faut partir du cercle « item » en suivant le chemin p:. Arrivé au cercle « Statement », vous pouvez suivre plusieurs chemins, dont le ps: (qui donnera la même valeur que le chemin wdt:) ou le pq:, qui vous donnera la valeur du qualificatif.

Le "statement" lui-même est seulement un long et unique URI dont le seul but est de permettre d'y extraire des trucs tels les qualificatifs.

Cela ressemble un peu à ceci (et ici je me base sur des éléments YYYY Sweet Adelines International chorus competition plutôt que sur des éléments de gagnants tels Q7386689#P2522, mais le principe est le même) :

SELECT ?item ?itemLabel (year(?when) as ?year) ?winnerLabel ?score
WHERE 
{
  ?item wdt:P31 wd:Q57776091.  # l'élément est une Sweet Adelines International chorus competition
  ?item wdt:P585 ?when.        # l'élément possède une date (P585)
  ?item p:P1346 ?statement.    # l'élément possède un vainqueur (P1346), auquel on réfèrera par la suite par ?statement, l'URI unique
  ?statement ps:P1346 ?winner. # valeur pour vainqueur (élément de celui-ci)
  ?statement pq:P1351 ?score.  # nombre de points marqué par le vainqueur
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
} order by desc(?year)
Try it!

Et il n'y a pas de raison pourquoi vous ne devriez pas voir le "statement" - ça devrait aider :

SELECT ?item ?itemLabel (year(?when) as ?year) ?statement ?winnerLabel ?score
WHERE 
{
  ?item wdt:P31 wd:Q57776091.  # L'élément est une Sweet Adelines International chorus competition
  ?item wdt:P585 ?when.        # L'élément possède une date
  ?item p:P1346 ?statement.    # L'élément a une valeur pour vainqueur (P1346), (cela crée l'URI)
  ?statement ps:P1346 ?winner. # identité du vainqueur
  ?statement pq:P1351 ?score.  # nombre de points enregistré par le vainqueur
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
} order by desc(?year)
Try it!

Vous pouvez également écrire la requête plus efficacement en utilisant judicieusement des points virgule et crochets :

SELECT ?item ?itemLabel (year(?when) as ?year) ?winnerLabel ?score
WHERE 
{
  ?item wdt:P31 wd:Q57776091 ;  # l'élément est une Sweet Adelines International chorus competition
       wdt:P585 ?when ;        # qui possède une date
       p:P1346 [ps:P1346 ?winner ; pq:P1351 ?score] .  
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
} order by desc(?year)
Try it!

Pour accéder aux références, il faut lier ?statement à ?autre_statement via un chemin prov:wasDerivedFrom. L' ?autre_statement est un autre URI permettant d'accéder aux références. Une fois celui-ci obtenu, on peut l'utiliser pour accéder aux références à l'aide du chemin pr: (Property Reference). Dans notre exemple, on peut ainsi aller chercher un ref_url et une date de consultation (P854 et P813).

Toujours en se référant à la logique du diagram, on part de l'élément vers le statement en suivant le chemin p:, puis du statement au cercle "reference" (noté ?autre_statement dans le code ci-bas) en suivant prov:wasDerivedFrom ... puis, de là, vers les valeurs uniques des références en suivant pr: - précisément pr:P854 pour ref_url et pr:P813 pour la date de consultation.

SELECT ?item ?itemLabel ?statement ?autre_statement (year(?when) as ?year) ?winnerLabel ?score ?ref_url ?retrieved
WHERE 
{
  ?item wdt:P31 wd:Q57776091 ;  # L'élément est une Sweet Adelines International chorus competition
  wdt:P585 ?when ;        # qui possède une date
  p:P1346 ?statement.    # et un vainqueur
  ?statement ps:P1346 ?winner ; # le vainqueur est ...
  pq:P1351 ?score ;  # avec ... points marqués
  prov:wasDerivedFrom ?autre_statement. #d'après la source ...
  ?autre_statement pr:P854 ?ref_url ; #à l'URL ...
  pr:P813 ?retrieved. #à la date ...
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
} order by desc(?year)
Try it!

Liste de requêtes[edit]

Générales[edit]

#Éléments ayant X déclarations ou Y identifiants externes (X,Y = chiffres romains)
SELECT ?item ?itemLabel ?id WHERE {
#  ?item wikibase:statements X .
#  ?item wikibase:identifiers Y .
  ?item wdt:<IDENTIFIANT> ?id
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
Try it!
#Toutes les femmes ayant reçu la distinction d'officière de l'Ordre national du Québec
SELECT DISTINCT ?item WHERE {
  ?item wdt:P31 wd:Q5 .
  ?item wdt:P21 wd:Q6581072 .
  ?item wdt:P166 wd:Q15464524 .
}
Try it!
  • Croisement avec Petscan pour celles qui ont un article sur lequel l'infobox Biographie2 est affichée : petscan:844167
#Tous les éléments distincts sourcés avec le CQT avec les pourcentages de certaines natures, pays, naissance, etc..

SELECT (COUNT(DISTINCT ?item) AS ?total)
  (COUNT(DISTINCT ?membre_CQT) AS ?est_membre_CQT) (?est_membre_CQT / ?total * 100.0 AS ?pct_membre_CQT)
  (COUNT(DISTINCT ?item_a_pays) AS ?a_pays) (?a_pays / ?total * 100.0 AS ?pct_pays)
  (COUNT(DISTINCT ?item_a_image) AS ?a_image) (?a_image / ?total * 100.0 AS ?pct_image)
  (COUNT(DISTINCT ?item_est_géolocalisé) AS ?est_géolocalisé) (?est_géolocalisé / ?total * 100.0 AS ?pct_géolocalisé)  
  (COUNT(DISTINCT ?item_a_localisation) AS ?a_localisation) (?a_localisation / ?total * 100.0 AS ?pct_localisation)
  (COUNT(DISTINCT ?item_a_siteweb) AS ?a_siteweb) (?a_siteweb / ?total * 100.0 AS ?pct_siteweb)
  (COUNT(DISTINCT ?item_a_capacité) AS ?a_capacité) (?a_capacité / ?total * 100.0 AS ?pct_capacité)
  (COUNT(DISTINCT ?item_est_organisation) AS ?est_organisation) (?est_organisation / ?total * 100.0 AS ?pct_organisation)
  (COUNT(DISTINCT ?organisation_a_fondation) AS ?a_fondation) (?a_fondation / ?est_organisation * 100.0 AS ?pct_fondation)
  (COUNT(DISTINCT ?organisation_plusde10ans) AS ?plusde10ans) (?plusde10ans / ?est_organisation * 100.0 AS ?pct_plusde10ans)
  (COUNT(DISTINCT ?organisation_moinsde5ans) AS ?moinsde5ans) (?moinsde5ans / ?est_organisation * 100.0 AS ?pct_moinsde5ans)
  (COUNT(DISTINCT ?organisation_a_direction) AS ?a_direction) (?a_direction / ?est_organisation * 100.0 AS ?pct_direction)
  (COUNT(DISTINCT ?directionféminin) AS ?direction_féminin) (?direction_féminin / ?a_direction * 100.0 AS ?pct_direction_féminin)
  (COUNT(DISTINCT ?directionmasculin) AS ?direction_masculin) (?direction_masculin / ?a_direction * 100.0 AS ?pct_direction_masculin)
  (COUNT(DISTINCT ?item_est_oeuvre) AS ?est_oeuvre) (?est_oeuvre / ?total * 100.0 AS ?pct_oeuvre)
  (COUNT(?item_est_humain) AS ?est_humain) (?est_humain / ?total * 100.0 AS ?pct_humain)
  (COUNT(?item_est_féminin) AS ?est_féminin) (?est_féminin / ?est_humain * 100.0 AS ?pct_féminin)
  (COUNT(?item_est_masculin) AS ?est_masculin) (?est_masculin / ?est_humain * 100.0 AS ?pct_masculin)
  (COUNT(?item_est_nonsexué) AS ?est_nonsexué) (?est_nonsexué / ?est_humain * 100.0 AS ?pct_nonsexué) #non précisé
  (COUNT(DISTINCT ?item_a_naissance) AS ?a_naissance) (?a_naissance / ?est_humain * 100.0 AS ?pct_naissance)
  (COUNT(DISTINCT ?item_a_mort) AS ?est_mort) (?est_mort / ?est_humain * 100.0 AS ?pct_mort)
  (COUNT(DISTINCT ?item_a_résidence) AS ?a_résidence) (?a_résidence / ?est_humain * 100.0 AS ?pct_résidence)
  (COUNT(DISTINCT ?item_a_lieutravail) AS ?a_lieutravail) (?a_lieutravail / ?est_humain * 100.0 AS ?pct_lieutravail)
  (COUNT(DISTINCT ?date_décennie) AS ?a_décennie) (?a_décennie / ?est_humain * 100.0 AS ?pct_décennie)
  (COUNT(DISTINCT ?item_a_occupation) AS ?a_occupation) (?a_occupation / ?est_humain * 100.0 AS ?pct_occupation)
  (COUNT(DISTINCT ?item_a_langue) AS ?a_langue) (?a_langue / ?est_humain * 100.0 AS ?pct_langue)
  (COUNT(DISTINCT ?item_a_fonction) AS ?a_fonction) (?a_fonction / ?est_humain * 100.0 AS ?pct_fonction)
  (COUNT(DISTINCT ?item_a_langueoeuvre) AS ?a_langueoeuvre) (?a_langueoeuvre / ?est_oeuvre * 100.0 AS ?pct_langueoeuvre)
  (COUNT(DISTINCT ?oeuvre_est_fr) AS ?est_fr) (?est_fr / ?est_oeuvre * 100.0 AS ?pct_fr)
  (COUNT(DISTINCT ?oeuvre_est_en) AS ?est_en) (?est_en / ?est_oeuvre * 100.0 AS ?pct_en)
WITH
{
  SELECT DISTINCT ?item
  WHERE
  {
    # Trouver les éléments avec le CQT en référence
    ?autre_statement pr:P248 wd:Q100443909 .
    ?statement prov:wasDerivedFrom ?autre_statement .

    # Quelles propriétés sont sourcées par le CQT
    ?property a wikibase:Property ;
       wikibase:claim ?ppp .
    ?item ?ppp ?statement .
  }
}
AS %items_CQT
WHERE
{
  INCLUDE %items_CQT
  OPTIONAL
  {
    ?item wdt:P463 wd:Q64402570 .
    BIND (?item AS ?membre_CQT)
  }
  OPTIONAL
  {
    ?item (wdt:P17 | wdt:P27) ?pays .
    BIND (?item AS ?item_a_pays)
  }
  OPTIONAL
  {
    ?item wdt:P18 ?image .
    BIND (?item AS ?item_a_image)
  }
  OPTIONAL
  {
    ?item wdt:P625 ?géolocalisé .
    BIND (?item AS ?item_est_géolocalisé)
  }
    OPTIONAL
  {
    ?item wdt:P131 ?localisation .
    BIND (?item AS ?item_a_localisation)
  }
      OPTIONAL
  {
    ?item wdt:P856 ?siteweb .
    BIND (?item AS ?item_a_siteweb)
  }
    OPTIONAL
  {
    ?item wdt:P1083 ?capacité .
    BIND (?item AS ?item_a_capacité)
  }
  OPTIONAL
  {
    ?item wdt:P31 / wdt:P279* wd:Q43229 .
    hint:Prior hint:gearing "forward" .
    BIND (?item AS ?item_est_organisation)
  }
    OPTIONAL
  {
    ?item wdt:P31 / wdt:P279* wd:Q43229 ;
          (wdt:P1037|wdt:P169|wdt:P8938) ?direction .
    BIND (?item AS ?organisation_a_direction)
  }
    OPTIONAL
  {
    ?item wdt:P31 / wdt:P279* wd:Q43229 ;
          (wdt:P1037|wdt:P169|wdt:P8938) ?direction .
    ?direction wdt:P21 wd:Q6581072 .
    BIND (?item AS ?directionféminin)
  }
    OPTIONAL
  {
    ?item wdt:P31 / wdt:P279* wd:Q43229 ;
          (wdt:P1037|wdt:P169|wdt:P8938) ?direction .
    ?direction wdt:P21 wd:Q6581097 .
    BIND (?item AS ?directionmasculin)
  }
    OPTIONAL
  {?item wdt:P31/wdt:P279* wd:Q43229 ;
       wdt:P571 ?fondation .
     BIND (?item AS ?organisation_a_fondation)
  }
    OPTIONAL
  {?item wdt:P31/wdt:P279* wd:Q43229 ;
         wdt:P571 ?fondation .
     BIND(YEAR(NOW()) AS ?year)
     FILTER (?year - YEAR(?fondation) >= 10) #10 ans et plus
     BIND (?item AS ?organisation_plusde10ans)
  }
    OPTIONAL
  {?item wdt:P31/wdt:P279* wd:Q43229 ;
       wdt:P571 ?fondation .
       BIND(YEAR(NOW()) AS ?year)
       FILTER (?year - YEAR(?fondation) <= 5) #5 ans et moins
     BIND (?item AS ?organisation_moinsde5ans)
  }
    OPTIONAL
  {
    ?item wdt:P31 / wdt:P279* wd:Q386724 .
    hint:Prior hint:gearing "forward" .
    BIND (?item AS ?item_est_oeuvre)
  }
  OPTIONAL
  {
    ?item wdt:P31 wd:Q5 .
    BIND (true AS ?item_est_humain)
  }
  OPTIONAL
  {
    ?item wdt:P31 wd:Q5.
    minus {?item wdt:P21 ?sexe .}
    BIND (true AS ?item_est_nonsexué)
  }
  OPTIONAL
  {
    ?item wdt:P21 wd:Q6581072 .
    BIND (true AS ?item_est_féminin)
  }
  OPTIONAL
  {
    ?item wdt:P21 wd:Q6581097 .
    BIND (true AS ?item_est_masculin)
  }
  OPTIONAL
  {
    ?item wdt:P569 ?naissance .
    BIND (?item AS ?item_a_naissance)
  }
  OPTIONAL
  {
    ?item wdt:P570 ?mort .
    BIND (?item AS ?item_a_mort)
  }
   OPTIONAL
  {
    ?item wdt:P551 ?résidence .
    BIND (?item AS ?item_a_résidence)
  }
   OPTIONAL
  {
    ?item wdt:P937 ?lieutravail .
    BIND (?item AS ?item_a_lieutravail)
  }
  OPTIONAL
  {
    ?item (p:P569/psv:P569|p:P570/psv:P570) [wikibase:timePrecision ?datePrecision; wikibase:timeValue ?naissance ] .
  filter(?datePrecision=8)
    BIND (?item AS ?date_décennie)
  }
  
  OPTIONAL
  {
    ?item wdt:P106 ?occupation .
    BIND (?item AS ?item_a_occupation)
  }
  OPTIONAL
  {
    ?item wdt:P1412 ?langue .
    BIND (?item AS ?item_a_langue)
  }
  OPTIONAL
  {
    ?item wdt:P39 ?fonction .
    BIND (?item AS ?item_a_fonction)
  }
   OPTIONAL
  {
    ?item wdt:P407 ?langueoeuvre .
    BIND (?item AS ?item_a_langueoeuvre)
  }
    OPTIONAL
  {
    ?item wdt:P407 wd:Q150 .
    BIND (?item AS ?oeuvre_est_fr)
  }
      OPTIONAL
  {
    ?item wdt:P407 wd:Q1860 .
    BIND (?item AS ?oeuvre_est_en)
  }
}
Try it!
#décompter des natures fortement peuplées = utiliser *
SELECT (COUNT(*) AS ?count)
{
  ?item wdt:P31 wd:Q5 .
}
Try it!
#tous les éléments avec une référence spécifique
SELECT DISTINCT ?item ?itemLabel ?natureLabel {
  ?item ?prop ?statement .
  ?statement prov:wasDerivedFrom ?ref.
  ?ref pr:P248 wd:Q111136998 .
  ?item p:P31 ?value .
  ?value ps:P31 ?nature .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
Try it!
#tous les éléments avec une référence au RQD, en évitant les doublons de nature.
SELECT ?item ?itemLabel (GROUP_CONCAT(DISTINCT ?natureLabel_;separator="; ") as ?natureLabel) {
  ?item ?prop ?statement .
  ?statement prov:wasDerivedFrom ?ref.
  ?ref pr:P248 wd:Q112601887 .
  ?item p:P31 ?value .
  ?value ps:P31 ?nature .
 ?item wdt:P463 wd:Q3423698 .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". 
                         ?item rdfs:label ?itemLabel .
                         ?nature rdfs:label ?natureLabel_ .}
} group by ?item ?itemLabel
Try it!
#terrains de baseball au Québec, avec une seule image par élément
SELECT ?lieu ?lieuLabel ?villeLabel ?coordonnées (SAMPLE(?image) AS ?sampleImage) WHERE {
  VALUES ?type { wd:Q595452 wd:Q483110 } # Soit un stade spécifique de baseball (Q595452) soit un stade général (Q483110)
  
  ?lieu wdt:P31 ?type;         # Instance de l'un des types spécifiés
        wdt:P17 wd:Q16;        # Situé au Canada
        wdt:P131 ?ville;       # Situé dans la ville
        wdt:P18 ?image.        # A une image

  ?ville wdt:P131* wd:Q176;    # La ville est située dans le Québec
  
  OPTIONAL { ?lieu wdt:P625 ?coordonnées. }  # Coordonnées géographiques (optionnel)
  
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
GROUP BY ?lieu ?lieuLabel ?villeLabel ?coordonnées
Try it!
#terrains de baseball au Québec regroupant ensemble toutes les images d'un élément, séparées chacune par une virgule
SELECT DISTINCT ?lieu ?lieuLabel ?villeLabel ?coordonnées (GROUP_CONCAT(?image; SEPARATOR=", ") AS ?images) WHERE {
  VALUES ?type { wd:Q595452 wd:Q483110 } # Soit un stade spécifique de baseball (Q595452) soit un stade général (Q483110)
  
  ?lieu wdt:P31 ?type;         # Instance de l'un des types spécifiés
        wdt:P17 wd:Q16;        # Situé au Canada
        wdt:P131 ?ville;       # Situé dans la ville
        wdt:P18 ?image.        # A une image

  ?ville wdt:P131* wd:Q176;    # La ville est située dans le Québec
  
  OPTIONAL { ?lieu wdt:P625 ?coordonnées. }  # Coordonnées géographiques (optionnel)
  
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
GROUP BY ?lieu ?lieuLabel ?villeLabel ?coordonnées
Try it!

Labels, descriptions et alias[edit]

#Lister des éléments sans label
SELECT DISTINCT ?item ?label_CODE DE LANGUE SOURCE WHERE {
  ?item wdt:P31 wd:QÉLÉMENT RECHERCHÉ .
  ?item rdfs:label ?label_CODE DE LANGUE SOURCE filter(lang(?label_CODE DE LANGUE SOURCE) = "CODE DE LANGUE SOURCE>") .
  MINUS { ?item rdfs:label ?label_CODE DE LANGUE SANS LABEL filter(lang(?label_CODE DE LANGUE SANS LABEL) = "<CODE DE LANGUE SANS LABEL>") . }
}
LIMIT 1000
Try it!
#Actrices sans description en français
#added before 2016-10
SELECT DISTINCT ?item ?itemLabel
WHERE
{
	?item wdt:P106 wd:Q33999 .
	?item wdt:P21 wd:Q6581072 .
	OPTIONAL { ?item schema:description ?itemDescription  }
        FILTER(LANG(?itemDescription) IN ("fr")).
	FILTER (!BOUND(?itemDescription))
	?item wdt:P31 wd:Q5 .
	SERVICE wikibase:label { bd:serviceParam wikibase:language "fr"}
}
LIMIT 1000
Try it!
#Alias DE d'éléments d'ADB
SELECT distinct ?item ?label
WHERE
{  ?item wdt:P361 wd:Q590208 ;
         skos:altLabel ?label .
  FILTER(LANG(?label) = "de").
  FILTER CONTAINS(?label, "Lde")
}
Try it!
#Éléments liés à Universalis et qui contiennent un certain label
SELECT DISTINCT ?person ?label (LANG(?label) AS ?lang)
WHERE
{
  ?person wdt:P3219 [];
          rdfs:label ?label.
  FILTER(LANG(?label) IN ("en", "es", "fr", "de")). # tweak to taste
  FILTER(CONTAINS(?label, "(exposition")).
}
Try it!
#description particulière dans une langue donnée
SELECT DISTINCT ?item ?label
WHERE
{
  ?item schema:description "DESCRIPTION"@CODE DE LANGUE.
  OPTIONAL {
    ?item rdfs:label ?label.
    FILTER(LANG(?label) = "CODE DE LANGUE DU LABEL").
  }
}
Try it!
#Série télévisée des États-Unis qui contient la description "television series" en anglais, qui n'est pas une téléréalité et qui n'a pas de description en français
SELECT DISTINCT ?item ?label
WHERE
{MINUS {?item (wdt:P136BARREVERTICALEwdt:P31) wd:Q182415.}
  ?item schema:description "television series"@en.
 FILTER(LANG(?label) = "en").
  OPTIONAL {
    ?item rdfs:label ?label.
    ?item wdt:P31 wd:Q5398426 ;
          wdt:P495 wd:Q30 .
    FILTER(NOT EXISTS {
    ?item schema:description ?itemdesc.
    FILTER(LANG(?itemdesc) = "fr")
  })
  }
}
Try it!
#Cours d'eau de l'Inde sans label en français en ordre décroissant d'interwikis
SELECT DISTINCT ?item ?label_en ?linkcount WHERE {
  ?item wdt:P31 wd:Q4022 .
  ?item wdt:P17 wd:Q668 .
  ?item wikibase:sitelinks ?linkcount .
  ?item rdfs:label ?label_en filter(lang(?label_en) = "en") .
  MINUS { ?item rdfs:label ?label_fr filter(lang(?label_fr) = "fr") . }
}
GROUP BY ?item ?label_en ?linkcount
ORDER BY DESC(?linkcount)
Try it!
#Villages québécois ayant des noms de saints et de saintes
#defaultView:Map
SELECT DISTINCT ?item ?itemL ?coords ?layer WHERE {
  ?item wdt:P31/wdt:P279* wd:Q3327873 ;
        wdt:P625 ?coords ;
        rdfs:label ?itemL filter (lang(?itemL) = "fr") .
  FILTER (STRSTARTS(?itemL, "Saint")) .
  BIND(SUBSTR(?itemL,1,6) AS ?layer).
}
Try it!
#Tous les établissements humains+ en Inde qui n'ont pas de description en anglais
SELECT DISTINCT ?item
WHERE
{
	?item wdt:P31/wdt:P279* wd:Q486972 .
	?item wdt:P17 wd:Q668 .
	MINUS { ?item schema:description ?itemDescription filter(lang(?itemDescription)="en") .}
}
Try it!
#Élément ayant comme pays les États-Unis et possédant une certaine EXPRESSION dans la description en français
SELECT DISTINCT ?item ?sitelink
WHERE
{  
  ?item wdt:P17 wd:Q30 .
  ?item schema:description ?sitelink 
  FILTER(LANG(?sitelink) IN ("fr")).
  FILTER ( REGEX(?sitelink, "^.*EXPRESSION.*") )
}
Try it!
#articles scientifiques publié dans un certain périodique et dont le titre en anglais commence par [ et se termine par ]
SELECT ?item ?label ?pub
WHERE {
  ?item wdt:P31 wd:Q13442814 ;
        rdfs:label ?label ;
        #wdt:P407 ?lang ;
        wdt:P1433 wd:Q15751978 ;
        wdt:P1433 ?pub .

  ?item wdt:P698 ?pmid.

  FILTER(LANG(?label) = "en")

  FILTER(STRSTARTS(?label, "[")).
  FILTER(STRENDS(?label, "].")).
}
Try it!
#articles scientifiques non associés à une publication, possédant "GRB" dans leur libellé et dont l'identifiant NASA ADS, unique identifiant externe de l'élément, contient les lettres "GCN".
SELECT ?item ?label
WHERE {
  ?item wdt:P31 wd:Q13442814 ;
        wikibase:identifiers 1;
        rdfs:label ?label ;
        wdt:P819 ?ads.
  MINUS{?item wdt:P1433 ?dans .}
  FILTER(LANG(?label) = "en")
  FILTER(STRSTARTS(?label, "GRB")).
  bind(STR(?ads) as ?string)
  FILTER(CONTAINS(?string, "GCN")).
}
Try it!
#Livres ayant un titre dans une certaine langue sans étiquette dans cette langue.
SELECT ?item ?lang ?title WHERE {
?item wdt:P31/wdt:P279* wd:Q571 ; # Q571 for book
      wdt:P1476 ?title .
  BIND(LANG(?title) as ?lang) FILTER (?lang != "und")
FILTER (NOT EXISTS{ ?item rdfs:label ?itemLabel. FILTER(lang(?itemLabel) = ?lang) })
}
Try it!
#Trouver des labels sans TIMEOUT grâce à mwapi
SELECT distinct ?item ?label
WHERE
{
  SERVICE wikibase:mwapi
  {
    bd:serviceParam wikibase:endpoint "www.wikidata.org";
                    wikibase:api "Generator";
                    mwapi:generator "search";
                    mwapi:gsrsearch "inlabel:Simon @fr";
                    mwapi:gsrlimit "max".
    ?item wikibase:apiOutputItem mwapi:title.
  }
  ?item rdfs:label ?label.
  ?item wdt:P31 wd:Q5 .
  FILTER CONTAINS(?label, "Simon ")
  minus {?item wdt:P735 ?prénom .}
}
Try it!
#La personne ayant le plus grand nombre d'enfants portant le même nom qu'elle
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
SELECT ?person ?personLabel (COUNT(distinct ?descendant) AS ?count)
WHERE {
  ?person wdt:P31 wd:Q5; # être un humain
         wdt:P40 ?descendant.

  ?person rdfs:label ?personLabel.
  ?descendant rdfs:label ?descendantLabel.
  FILTER (?personLabel = ?descendantLabel)
}
GROUP BY ?person ?personLabel
ORDER BY DESC(?count)
Try it!
#La plus longue lignée de jr.
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
SELECT ?person1 ?person1Label WHERE 
{
?person1 wdt:P31 wd:Q5.
?person1 rdfs:label ?person1Label.
?person1 wdt:P40 ?person2.

?person2 rdfs:label ?person2Label.
FILTER (?person1Label = ?person2Label)
?person2 wdt:P40 ?person3.

?person3 rdfs:label ?person3Label.
FILTER (?person1Label = ?person3Label)
?person3 wdt:P40 ?person4.

?person4 rdfs:label ?person4Label.
FILTER (?person1Label = ?person4Label)
?person4 wdt:P40 ?person5.

?person5 rdfs:label ?person5Label.
FILTER (?person1Label = ?person5Label)
?person5 wdt:P40 ?person6.

?person6 rdfs:label ?person6Label.
FILTER (?person1Label = ?person6Label)
}
Try it!

Wikipédias[edit]

#Articles sur des humains de en sans page fr
PREFIX schema: <http://schema.org/>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
SELECT * WHERE {
?q wdt:P31/wdt:P279* wd:Q5 .
  ?pageEN schema:about ?q ;
          schema:isPartOf <https://en.wikipedia.org/> .
  MINUS {
  ?pageFR schema:about ?q ;
          schema:isPartOf <https://fr.wikipedia.org/> .
  }
}
Try it!
#Supernovas et sous-classes de possédant un lien vers au moins une version linguistique de Wikipédia
select distinct ?item where {
?item wdt:P31/wdt:P279* wd:Q3937 {?article schema:about ?item .
  filter(contains(str(?article), 'wikipedia')).}
Try it!
#Éléments Wikidata liés à Ayiti et qui ne possèdent pas de lien vers frwiki
SELECT DISTINCT ?linkcount ?item ?itemLabel WHERE { SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr" }
{?item wdt:P17 wd:Q790.}
UNION {?item wdt:P131/wdt:P131* wd:Q790 .} UNION {?item wdt:P27 wd:Q790}
?item wikibase:sitelinks ?linkcount .
OPTIONAL {?article 	schema:about ?item ; schema:isPartOf <https://fr.wikipedia.org/> .}
FILTER (!BOUND(?article))
}
ORDER BY DESC(?linkcount)
LIMIT 200
Try it!
#Éléments Wikidata liés à des personnalités féminines d'Ayiti et qui ne possèdent pas de lien vers frwiki
SELECT DISTINCT ?linkcount ?item ?itemLabel WHERE { SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr" }
?item wdt:P21 wd:Q6581072.
?item wdt:P27 wd:Q790.
?item wikibase:sitelinks ?linkcount .
OPTIONAL {?article 	schema:about ?item ; schema:isPartOf <https://fr.wikipedia.org/> .}
FILTER (!BOUND(?article))
}
ORDER BY DESC(?linkcount)
LIMIT 200
Try it!
#Éléments présent sur au moins une version linguistique de Wikipédia, mais par sur frwiki. Pour préciser la recherche, enlevez un dièse (#) à la fois.
#Le premier dièse réfère à pays = Canada
#Le deuxième dièse réfère à pays de nationalité = Canada
#Le troisième dièse réfère à pays d'origine = Canada
#Le quatrième réfère à localisation administrative = Québec
SELECT DISTINCT ?itemLabel ?itemDescription ?item WHERE
{
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
#?item wdt:P17 wd:Q16 . 
#?item wdt:P27 wd:Q16 .
#?item wdt:P495 wd:Q16 .
#?item wdt:P131* wd:Q176 .
?item wikibase:sitelinks ?linkcount .
FILTER (?linkcount >= 1)
OPTIONAL {?article 	schema:about ?item ; schema:isPartOf <https://fr.wikipedia.org/> .}
FILTER (!BOUND(?article))
}
Try it!

Encyclopédies, dictionnaires et bibliothèques[edit]

#Personnalités ayant une entrée sur le Dictionnaire biographique du Canada liée sur Wikidata, mais qui n'ont pas d'article en français
SELECT DISTINCT ?item WHERE {?item wdt:P31 wd:Q5 .
                    ?item wdt:P27 wd:Q16 .
FILTER EXISTS {?item wdt:P2753 [] }
 	OPTIONAL { ?sitelink schema:about ?item . ?sitelink schema:inLanguage "fr" }
FILTER (!BOUND(?sitelink)) }
Try it!
#Requête permettant d'obtenir des statistiques
#concernant les entrées de Britannica et d'Universalis.

#Pour rendre opérante la requête, enlevez, au début
#de la ligne, du dièse (#) jusqu'à l'expression ?item

#Pour des requêtes qui dépassent les capacités de l'outil 
#(le message « Limite du temps de requête atteinte » s'affiche), remplacez 
#la première ligne (SELECT ?item ?itemLabel...[AUTO_LANGUAGE],fr" }) 
#par SELECT (COUNT(?item) AS ?count) WHERE {

SELECT DISTINCT ?itemLabel ?itemDescription ?item WHERE { SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" }
##Si excède capacités de l'outil SELECT DISTINCT (COUNT(?item) AS ?count) WHERE {
#Britannica ?item wdt:P1417 ?britannica . 
#Universalis ?item wdt:P3219 ?universalis .
#localités ?item wdt:P31/wdt:P279* wd:Q486972 .
#êtres humains ?item wdt:P31 wd:Q5 . 
#femmes ?item wdt:P21 wd:Q6581072 .
#hommes ?item wdt:P21 wd:Q6581097 .
#Allemand-e-s ?item wdt:P27 wd:Q183 .
#Américain-e-s ?item wdt:P27 wd:Q30 .
#Belges ?item wdt:P27 wd:Q31 .
#Britanniques ?item wdt:P27 wd:Q145 .
#Canadien-ne-s ?item wdt:P27 wd:Q16 .
#Chinois-e-s ?item wdt:P27 wd:Q148 .
#Français-e-s ?item wdt:P27 wd:Q142 .
#Japonais-e-s ?item wdt:P27 wd:Q17 .
#Russes ?item wdt:P27 wd:Q159 .
#Russes (1721-1917) ?item wdt:P27 wd:Q34266 .
#Soviétiques ?item wdt:P27 wd:Q15180 .
#Suisse-sse-s ?item wdt:P27 wd:Q39 .
#musicien-ne-s ?item wdt:P106/wdt:P279* wd:Q639669 .
#artistes ?item wdt:P106/wdt:P279* wd:Q483501 .
#scientifiques ?item wdt:P106/wdt:P279* wd:Q901 .
#personnalité politique ?item wdt:P106/wdt:P279* wd:Q82955 .
#lien vers une version linguistique OPTIONAL {?article 	schema:about ?item ; schema:isPartOf <https://CODE_LANGUE.wikipedia.org/> .}
##sans lien vers une version linguistique FILTER (!BOUND(?article))
#lier au numéro des éléments Wikidata situé entre BORNE_INFÉRIEURE et BORNE_SUPÉRIEURE BIND( xsd:integer( STRAFTER( STR( ?item ), STR( wd:Q ) ) ) AS ?num ) . FILTER( BORNE_INFÉRIEURE < ?num && ?num < BORNE_SUPÉRIEURE ) .
}
#Classer par VARIABLE. ORDER BY ?VARIABLE
#Si temps limite atteint, limiter les résultats à X. LIMIT X
#Si temps limite atteint, fractionner les résultats en sautant les X premiers et en affichant les Y suivants. OFFSET X LIMIT Y
}
Try it!
  • Éléments ayant un lien vers Britannica et pas d'article sur frwiki, en limitant le nombre de résultats à 4,000 et en sautant les 4,000 premiers résultats.
SELECT DISTINCT ?item ?itemLabel WHERE { SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr" }
?item wdt:P1417 [] .
OPTIONAL {?article 	schema:about ?item ; schema:isPartOf <https://fr.wikipedia.org/> .}
FILTER (!BOUND(?article))
}
OFFSET 4000 LIMIT 4000
Try it!
  • 200 éléments aléatoire avec une propriété P1417 et leur lien vers Britannica
SELECT DISTINCT ?item ?itemLabel ?burl WITH {
  SELECT DISTINCT ?item ?burl WHERE {
    wd:P1417 wdt:P1630 ?formaturl .
    ?item wdt:P1417 ?bid .
       BIND(IRI(REPLACE(?bid, '^(.+)$', ?formaturl)) AS ?burl).
  }
  ORDER BY MD5(CONCAT(STR(?item),STR(RAND())))
  LIMIT 200
} AS %results WHERE {
  INCLUDE %results.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
Try it!
#Toutes les bibliothèques du Québec
SELECT DISTINCT distinct ?item ?itemLabel ?locatedLabel WHERE {
  ?item wdt:P31/wdt:P279* wd:Q7075 . 
  ?item wdt:P17 wd:Q16.
  ?item wdt:P131/wdt:P131* wd:Q176 .
  ?item wdt:P131 ?located.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
Try it!
#Évaluer le contenu de genre masculin et féminin d'encyclopédies diverses (TIMEOUT)
select ?property ?propertyLabel ?propertyDescription 
       (group_concat(concat(str(?sexe_label_final), 
                           ": ", 
                           str(?effectif), " ",
                           "(", str(round(?effectif / sum(?effectif) * 100)), "%",")") ; separator=" - ") as ?sexes) 
       (sum(?effectif) as ?total)

with {

select ?property ?sexe (count(?person) as ?effectif)
{
    ?property rdf:type wikibase:Property ;
              wdt:P31/wdt:P279* wd:Q55452870 ;
              wikibase:directClaim ?propertyMainValue .
  
    ?person ?propertyMainValue [] ;
            wdt:P31 wd:Q5 .
    optional {
       ?person wdt:P21 ?sexe2 .
       bind(if(isBlank(?sexe2), "inconnu", ?sexe2) as ?sexe3) 
    }
    bind(if(!bound(?sexe3), "non specifié", ?sexe3) as ?sexe)
    
 
} group by ?property ?sexe
  order by ?property ?sexe
} as %dataset

where {
  {
    select ?property ?propertyLabel ?propertyDescription ?sexe ?sexe_label_final ?effectif{
      include %dataset .
      optional { ?sexe rdfs:label ?label_sexe filter langmatches(lang(?label_sexe), "fr") }
      SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
      bind (if(bound(?label_sexe), ?label_sexe, ?sexe) as ?sexe_label_final)
    }
  }
  bind( (?effectif / ?total )  as ?pourcent)
} group by ?property ?propertyLabel ?propertyDescription
Try it!

Géographiques[edit]

#La plus grande distance entre un lieu de naissance et un lieu de mort
select distinct ?itemLabel ?distance ?item where {
{select distinct ?item ?distance where {
?item wdt:P31 wd:Q5 ;
      wdt:P19/wdt:P625 ?lieunaissance ;
      wdt:P20/wdt:P625 ?lieumort .   
bind(geof:distance(?lieunaissance, ?lieumort) as ?distance)
filter(?distance > 19000)
}limit 200
}
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
order by desc (?distance)
Try it!
#articles anglais, français et anglais-français géolocalisés au Nouveau-Brunswick
#defaultView:Map{"hide":["?rgb","?layer"]}
SELECT ?item ?coord ?en ?fr ?layer ?rgb WHERE {
  ?item wdt:P17 wd:Q16;
    (wdt:P131*) wd:Q1965;
    wdt:P625 ?coord.
  
    OPTIONAL {
      ?en schema:about ?item;
        schema:isPartOf <https://en.wikipedia.org/>.
    }
  OPTIONAL
    {
      ?fr schema:about ?item;
        schema:isPartOf <https://fr.wikipedia.org/>.
    }
  FILTER(BOUND(?en)|| BOUND(?fr))
  BIND (if(BOUND(?en) && BOUND(?fr),"ff0000",if(BOUND(?en),"00ff00",if(BOUND(?fr),"0000FF","000000" ))) as ?rgb)
  BIND (if(BOUND(?en) && BOUND(?fr),"EN & FR",if(BOUND(?en),"EN",if(BOUND(?fr),"FR","NIL" ))) as ?layer)
}
Try it!

Propriétés[edit]

#item qui ne possède qu'une seule valeur pour une propriété donnée
SELECT ?item WHERE 
{
  ?item wdt:P407 wd:Q1860;
        wdt:P407 ?value .
} group by ?item having(COUNT(DISTINCT ?value) = 1)
Try it!
#Liste d'éléments possédant trois valeurs pour trois propriétés
SELECT DISTINCT ?item WHERE {
  ?item wdt:PROPRIÉTÉ1 wd:ÉLÉMENT1 .
  ?item wdt:PROPRIÉTÉ2 wd:ÉLÉMENT2 .
  ?item wdt:PROPRIÉTÉ3 wd:ÉLÉMENT3 .
}
Try it!
#Liste avec un OR entre les propriété 2 et 3
SELECT DISTINCT ?item WHERE {
{
  ?item wdt:PROPRIÉTÉ1 wd:ÉLÉMENT1 .
  ?item wdt:PROPRIÉTÉ2 wd:ÉLÉMENT2 .
} UNION {
    ?item wdt:PROPRIÉTÉ3 wd:ÉLÉMENT3 .
}
}
Try it!
#Liste avec un NOCLAIM pour la propriété 3
SELECT DISTINCT ?item WHERE {
{
  ?item wdt:PROPRIÉTÉ1 wd:ÉLÉMENT1 .
  ?item wdt:PROPRIÉTÉ2 wd:ÉLÉMENT2 .
  MINUS { ?item wdt:PROPRIÉTÉ3 wd:ÉLÉMENT3 }
}
Try it!
#title:Éléments sans propriété liés à Wikipédia en français
select ?itemLabel ?item
where {
{
select distinct ?item 
where{
  ?item wikibase:statements 0 . 
  [] schema:about ?item ; schema:isPartOf <https://fr.wikipedia.org/>. 
}
}
service wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
Éléments sans propriété liés à Wikipédia en français
#Rechercher un élément avec tous ses sous-classes pour une propriété donnée
SELECT DISTINCT ?item WHERE { 
{

?item wdt:PROPRIÉTÉ/wdt:P279* wd:ÉLÉMENT1 . }
}
Try it!
#Propriété avec une et une seule valeur
SELECT DISTINCT ?item WHERE 
{
  ?item wdt:PROPRIÉTÉ wd:VALEUR;
        wdt:PROPRIÉTÉ ?value .
} group by ?item having(COUNT(DISTINCT ?value) = 1)
Try it!
#Propriétés avec plus d'une valeur
SELECT DISTINCT ?elem where {
   ?elem wdt:PROPRIÉTÉ ?val
} group by(?elem) having(count(distinct ?val)>QUANTITÉ)
Try it!
#Éléments avec plus d'une valeur pour une propriété donnée
SELECT DISTINCT ?item (COUNT(?creat) AS ?count) WHERE {
  ?item wdt:P31 wd:Q3305213 ; wdt:P170 ?creat .
}
GROUP BY ?item
HAVING (?count>1)
Try it!
#Élément dont une propriété possède un mot particulier
SELECT DISTINCT ?item ?nom WHERE
{
    ?item  wdt:P3219 ?nom . 
    FILTER regex (?nom, "exposition").
}
Try it!
#Éléments les plus utilisés par une PROPRIÉTÉ particulière
SELECT ?something ?somethingLabel (count (DISTINCT ?item) as ?count) WHERE 
{
  ?item wdt:PROPRIÉTÉ ?something . 
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr". }
} 
group by ?something ?somethingLabel order by desc(?count)
Try it!
#articles scientifiques non associé à une publication, possédant un identifiant NASA ADS, avec la partie de l'identifiant ADS désignant le code du périodique concerné
SELECT distinct ?item ?label ?identifiant
WHERE {
  ?item wdt:P31 wd:Q13442814 ;
        rdfs:label ?label ;
        wdt:P819 ?ads ;
bind(STR(?ads) as ?string)
BIND (REPLACE (?string, ".*?([^0-9]*?)\\..*$", "$1") AS ?identifiant)
MINUS{?item wdt:P1433 ?pubs .}
}
limit 1000
Try it!

Qualificatifs[edit]

#Éléments ayant au moins un qualificatif pour une entrée de P39 spécifique
SELECT distinct ?item ?itemLabel ?itemDescription WHERE {

   ?item p:P39 ?award_statement .
   ?award_statement ps:P39 wd:Q15964890 .  #personnalité politique fédérale canadienne 
     	?award_statement ?pq_pred ?pq_obj . # a triple involving the award statement ...     
        ?prop wikibase:qualifier ?pq_pred . # ... with a predicate ?pq_pred that is a qualifier

SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
Try it!
#Élément ayant deux mêmes fonctions dont l'une possède au moins un qualificatif
SELECT DISTINCT ?item ?itemLabel WHERE {
  ?item p:P39 ?s1 .
  ?s1 ps:P39 wd:Q15964890 .
  FILTER NOT EXISTS {
    ?s1 ?pq1 [] .
    [] wikibase:qualifier ?pq1 .
  }
  ?item p:P39 [ ps:P39 wd:Q15964890; ?pq2 [] ] .
  ?qualifier wikibase:qualifier ?pq2 .
  SERVICE wikibase:label { bd:serviceParam wikibase:language 'en' }
}
Try it!
#Élément ayant deux mêmes fonctions avec un qualificatif commun
SELECT DISTINCT ?item ?itemLabel WHERE {
  ?item p:P39 ?s1 .
  ?s1 ps:P39 wd:Q15964890 .
  ?s1 pq:P2937 wd:Q2816456 .
  ?item p:P39 ?s2 .
  ?s2 ps:P39 wd:Q15964890 .
  ?s2 pq:P2937 wd:Q2816456 .
  filter (?s1 != ?s2)
  SERVICE wikibase:label { bd:serviceParam wikibase:language 'en' }
}
Try it!
#Élément ayant deux mêmes qualificatifs pour deux mêmes fonctions
SELECT DISTINCT ?item ?itemLabel ?v1Label ?v2Label WHERE {
  ?item p:P39 ?s1 .
  ?s1 ps:P39 wd:Q15964890 .
  ?s1 pq:P2937 ?v1 .
  ?item p:P39 ?s2 .
  ?s2 ps:P39 wd:Q15964890 .
  ?s2 pq:P2937 ?v2 .
  filter (?v1 = ?v2)
  filter (?s1 != ?s2)
  SERVICE wikibase:label { bd:serviceParam wikibase:language 'en' }
}
Try it!
#Élément ayant deux qualificatifs différents pour une même propriété et fonction
SELECT DISTINCT ?item ?itemLabel ?v1Label ?v2Label WHERE {
  ?item p:P39 ?s1 .
  ?s1 ps:P39 wd:Q15964890 .
  ?s1 pq:P2937 ?v1 .
  ?item p:P39 ?s2 .
  ?s2 ps:P39 wd:Q15964890 .
  ?s2 pq:P2937 ?v2 .
  filter (?v1 != ?v2)
  filter (?s1 = ?s2)
  SERVICE wikibase:label { bd:serviceParam wikibase:language 'en' }
}
Try it!
#Êtres humains qui ont 6 mois entre leur mois de naissance et leur mois de mort.
SELECT DISTINCT ?itemLabel ?item WHERE {
  {select distinct ?item where{
  ?item wdt:P31 wd:Q5 ; 
        p:P569/psv:P569 [wikibase:timePrecision ?datePrecision1; wikibase:timeValue ?naissance] ;
        p:P570/psv:P570 [wikibase:timePrecision ?datePrecision2; wikibase:timeValue ?mort ].
    filter(?datePrecision1>10)
    filter(?datePrecision2>10)
  bind(month(?mort) - month(?naissance) as ?mois)
    bind(day(?mort) - day(?naissance) as ?jour)
  FILTER(abs(?mois) = 6)
  FILTER(?jour = 0)
    }limit 100 }
SERVICE wikibase:label {bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en".}
}
order by ?itemLabel
Try it!
#tous les éléments utilisant une certaine référence, ainsi que le chemin y menant
SELECT ?item ?itemLabel ?property ?propertyLabel ?value ?valueLabel ?statement
WHERE 
{
  ?item ?ppp ?statement .               # there is a triple having ?statement as its object
  ?statement ?qqq ?value.               # there is a triple having ?statement as its subject
                                        # we need ?ppp to be a p:Pnnn and ?qqq to be a ps:Pnnn predicate
                                        # so that we know we're in the right part of the data model to be able
                                        # to test for a property statement reference. So... 
  
  ?property a wikibase:Property ;       # there is a property
     wikibase:claim ?ppp ;              # which has a predicate in the form p:Pnnn and an object ?ppp
                                        # so the variable ?ppp is a p:Pnnn predicate, and ?statement must be a property statement
     wikibase:statementProperty ?qqq .  # and which has a predicate in the form of ps:Pnnn and an object ?qqq
                                        # so the variable ?qqq is a ps:Pnnn predicate, and ?value must be the value for this property statement 
  
  ?statement prov:wasDerivedFrom ?autre_statement. #d'après la source ...   # and as you know, the property statement has at least one reference 
  ?autre_statement pr:P248 wd:Q100443909 .                                  # and the reference is 'stated in' 'Q100443909'
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
  
}
Try it!

Références[edit]

#Les éléments ayant pour pays le Canada et qui possèdent une entrée pour la propriété P239 sourcée à partir de mswiki
select distinct ?item ?itemLabel ?ICAO
WHERE 
{
  ?item wdt:P17 wd:Q16 .
  ?item p:P239 ?statement .
  ?statement ps:P239 ?ICAO.  
  ?statement prov:wasDerivedFrom ?from.
  ?from pr:P143 wd:Q845993.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO LANGUAGE],en". }
} order by ?itemLabel
Try it!
#Les éléments humains ayant un sexe déduit du prénom
select distinct ?item ?itemLabel ?sexLabel
WHERE 
{
  ?item wdt:P31 wd:Q5 .
  ?item p:P21 ?statement .
  ?statement ps:P21 ?sex.  
  ?statement prov:wasDerivedFrom ?from.
  ?from pr:P3452 wd:Q202444.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO LANGUAGE],en". }
} order by ?itemLabel
Try it!
#Les éléments humains ayant un sexe déduit du prénom + déterminé par l'heuristique déduit du prénom. ~195 000 résultats
select distinct ?item ?itemLabel ?sexLabel
WHERE 
{
  ?item wdt:P31 wd:Q5 .
  ?item p:P21 ?statement .
  ?statement ps:P21 ?sex.  
  ?statement prov:wasDerivedFrom ?from.
  {{?from pr:P3452 wd:Q202444.} union {?from pr:P887 wd:Q69652498.}}
}
Try it!

Chercheurs[edit]

#Auteurices d'articles scientifiques et membres de l'UAI
select distinct ?auteur ?auteurLabel ?UAI ?sexeLabel (count (DISTINCT ?item) as ?nbrarticles) where {
  ?item wdt:P31 wd:Q13442814 ;
        wdt:P50 ?auteur .
  ?auteur wdt:P9467 ?UAI ;
 optional {?auteur wdt:P21 ?sexe .}
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
group by ?auteur ?auteurLabel ?UAI ?sexeLabel ?nbrarticles
order by desc (?nbrarticles)
Try it!

Divers[edit]

#avoir un lien cliquable dans les résultats
SELECT DISTINCT ?item (URI(REPLACE(?p1630,'\\$1',?id)) AS ?url) WHERE 
{ 
  wd:P4606 p:P1630 [ ps:P1630 ?p1630 ; pq:P407 wd:Q1860 ] . # change Q1860 to Q150 if you prefer the French url
  ?item wdt:P4606 [] . 
  ?item p:P4606 ?statement .
  ?statement ps:P4606 ?id .
  MINUS {?statement pq:P407 [] . } 
}
Try it!
#Les différentes lignes du métro de Montréal, actuelles, à venir ou en projet
#defaultView:Map{"layer": "?lineLabel", "hide": ["?rgb", "?coord"]}
SELECT ?station ?stationLabel ?line ?lineLabel ?rgb ?coord ?image
WHERE {
  ?line wdt:P361 wd:Q392377.
  OPTIONAL { ?line wdt:P465 ?rgb. }
  ?station wdt:P81 ?line;
           wdt:P625 ?coord.
  OPTIONAL {?station wdt:P18 ?image}
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr" . }
}
Try it!
#Tous les humains avec un prénom masculin
SELECT DISTINCT ?item ?itemlabel WHERE {SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr" }
?item wdt:P31 wd:Q5 .
?item wdt:P735 ?prenom .
?prenom wdt:P31 wd:Q12308941 .
?prenom wdt:P31 ?masculin .
}
LIMIT 1000
Try it!
#Tous les éléments du Canada ayant un site web officiel dont la langue n'est pas précisée
SELECT DISTINCT ?item ?url WHERE 
{ 
  ?item wdt:P17 wd:Q16 . 
  ?item p:P856 ?statement .
  ?statement ps:P856 ?url .
  MINUS {?statement pq:P407 [] . } 
  }
Try it!
#Tous les items qui sont produits en plus d'une langue et dont (un/un de ses) site-s web (est/sont) qualifié-s d'anglais.
SELECT DISTINCT ?item ?itemLabel ?count
WHERE
{
{
  SELECT DISTINCT ?item (COUNT(DISTINCT ?lang) AS ?count) WHERE
{ 
  ?item wdt:P407 ?lang .
  ?item p:P856 ?statement .
  ?statement ps:P856 ?url .
  ?statement pq:P407 wd:Q1860 . 
}
  GROUP BY ?item
}
FILTER ( ?count > 1 )
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . }
}
ORDER BY DESC(?count) ?itemL
Try it!
#Site officiels ayant une certaine expression dans l'URL. La fonction regex \ habituelle doit être doublée (\\)
SELECT DISTINCT ?item ?sitelink
WHERE
{  
  ?item wdt:P856 ?sitelink .
  FILTER ( REGEX(str(?sitelink), "^.*EXPRESSION.*") )
}
Try it!
#personnalités canadiennes mortes en 1969 et nées ou mortes au Québec
SELECT DISTINCT ?item ?itemLabel ?mort WHERE {
 ?item wdt:P31 wd:Q5 ;
       wdt:P27 wd:Q16 ;
       wdt:P570 ?mort;            
    filter (?mort > "1969-01-01"^^xsd:dateTime && ?mort < "1970-01-01"^^xsd:dateTime)
{?item wdt:P19/wdt:P131* wd:Q176 .} UNION {?item wdt:P20/wdt:P131* wd:Q176 .}
    SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr,en". }
}
ORDER BY (?mort)
Try it!
#Tous les livres en anglais qui n'ont pas la propriété "titre"
SELECT DISTINCT ?item ?itemLabel WHERE {
SERVICE wikibase:label { bd:serviceParam wikibase:language "en"}
?item wdt:P407 wd:Q1860 ;
      wdt:P31 wd:Q571 ;
MINUS {?item wdt:P1476 [].}
}
Try it!
#Éléments dont la cause/circonstance du décès implique un accident de la route ou une sous-classe d'accident de la route
SELECT DISTINCT ?person ?personLabel
WHERE
{  
  ?person (wdt:P509|wdt:P1196)/wdt:P31?/wdt:P279* wd:Q9687 .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
Try it!
#Valeurs inadéquates pour P26
SELECT DISTINCT ?item ?itemLabel ?invalideLabel WHERE {?item wdt:P26 ?invalide . ?invalide wdt:P31/wdt:P279* wd:Q82799 . SERVICE wikibase:label {bd:serviceParam wikibase:language "en" . } } #Q179115 Q212878 Q188830 Q19798647 Q4233718 P31 Q4167410 Q82799
#Mieux ? 
SELECT DISTINCT ?item ?itemLabel ?conjoint ?conjointLabel WHERE {?item wdt:P26 ?conjoint MINUS {{?item wdt:P31/wdt:P279* wd:Q5 .} UNION {?item wdt:P31/wdt:P279* wd:Q4271324 .} UNION {?item wdt:P31/wdt:P279* wd:Q95074 .} UNION {?item wdt:P31/wdt:P279* wd:Q215627 .}} SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . } }
Try it!
#Les URL anglais des P4606 dont la langue n'est pas spécifiée.
SELECT DISTINCT ?item (URI(REPLACE(?p1630,'\\$1',?id)) AS ?url) WHERE 
{ 
  wd:P4606 p:P1630 [ ps:P1630 ?p1630 ; pq:P407 wd:Q1860 ] . # change Q1860 to Q150 if you prefer the French url
  ?item wdt:P4606 [] . 
  ?item p:P4606 ?statement .
  ?statement ps:P4606 ?id .
  MINUS {?statement pq:P407 [] . } 
}
Try it!
#Dénombrer des élément d'une propriété, ici P570, par mois et année. La précision se définit ainsi : CHIFFRE où 6 = millénaire 7 = siècle 8 = décennie 9 = année, 10 = mois, 11 = jour, ANNÉE sous la forme AAAA, MOIS sous la forme MM, JOUR sous la forme JJ
SELECT DISTINCT ?itemLabel ?mort ?item WHERE {
  ?item p:P570/psv:P570 [wikibase:timePrecision ?datePrecision; wikibase:timeValue ?mort ] .
  filter(?datePrecision>CHIFFRE)  
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . }
  FILTER(year(?mort) = ANNÉE)
  FILTER(month(?mort) = MOIS)
  FILTER(day(?mort) = JOUR)
}
Try it!
#Deux propriétés possédant la même valeur
SELECT DISTINCT ?item WHERE {
  ?item wdt:PROPRIÉTÉ1 ?NOM1.
  ?item wdt:PROPRIÉTÉ2 ?NOM2.
  FILTER(?NOM1 = ?NOM2).
Try it!
#defaultView:ImageGrid
SELECT DISTINCT ?itemLabel ?item ?film WHERE {
  ?item wdt:P31/wdt:P279* wd:Q11424; wdt:P10 ?film; wikibase:sitelinks ?linkcount .
  FILTER(REGEX(STR(?film), '[Tt]railer') = false) .
  SERVICE wikibase:label {bd:serviceParam wikibase:language '[AUTO_LANGUAGE],en' }
} ORDER BY DESC (?linkcount) LIMIT 100
Try it!
#Liste de chien par ordre décroissant d'âge en années
SELECT DISTINCT ?itemLabel ?age ?item WHERE {?item wdt:P31/wdt:P279* wd:Q144 ;
                                                   wdt:P569 ?naissance ;
                                                   wdt:P570 ?mort .
        FILTER(?age > 19) .
        BIND((?mort - ?naissance)/365.2425 as ?age )
    SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". } }
    ORDER BY DESC (?age)
Try it!
#deux entrées d'une propriété avec une certaine expression
SELECT DISTINCT ?item ?id1 ?id2 WHERE {
  ?item wdt:P380 ?id1 ; wdt:P380 ?id2 .
  FILTER (?id1 > ?id2). 
  FILTER regex (?id1, "^IA").
  FILTER regex (?id2, "^IA").
  }
Try it!
#Les cinq cent éléments les plus récents pour les films
SELECT ?item ?qid (GROUP_CONCAT( DISTINCT ?sitelink) as ?links)
(SAMPLE(?ids) as ?ids) (SAMPLE(?sl) as ?sl) (SAMPLE(?st) as ?st)
WITH
{
    SELECT DISTINCT ?item ?qid
    {
        { ?item wdt:P31 wd:Q11424 } 
        UNION
        { ?item wdt:P31 wd:Q24862 } 
        UNION
        { ?item wdt:P31 wd:Q506240 } 
        UNION
        { ?item wdt:P31 wd:Q336144 }
       BIND (xsd:integer(STRAFTER(str(?item), "Q")) AS ?qid) 
       FILTER (?qid > 65200900) .       
    }
    ORDER BY DESC(?qid) 
    LIMIT 500  
} as %films    
WHERE
{ 
  INCLUDE %films
  OPTIONAL { [] schema:about ?item ; schema:inLanguage ?l ; schema:name ?w2  BIND( CONCAT("[[:",?l,":",str(?w2),"|",?l,"]]") as ?sitelink) }   
  ?item wikibase:statements ?st; wikibase:sitelinks ?sl ; wikibase:identifiers ?ids 
}
GROUP BY ?item ?qid 
ORDER BY DESC(?qid) 
LIMIT 500
Try it!
#obtenir des résultats pour deux éléments spécifiques
SELECT ?item ?itemLabel ?mother ?motherLabel WHERE {
  VALUES ?item { wd:Q937 wd:Q1339 }
  OPTIONAL { ?item wdt:P25 ?mother. }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
#variante
SELECT ?item ?itemLabel ?mother ?motherLabel ?ISNI WHERE {
  VALUES ?ISNI { "0000 0001 2281 955X" "0000 0001 2276 4157" }
  ?item wdt:P213 ?ISNI.
  OPTIONAL { ?item wdt:P25 ?mother. }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
Try it!
#Êtres humains non-dieux dont la taille non-dépréciée dépasse 2,25 mètres
SELECT ?taillem ?item
WHERE
{?item wdt:P31 wd:Q5 ;
       p:P2048 ?valeur
  minus {?valeur wikibase:rank wikibase:DeprecatedRank}.     
  ?valeur psv:P2048 ?t .
  ?t wikibase:quantityAmount ?taille .
  ?t wikibase:quantityUnit ?unit.
  ?unit          p:P2370                 ?unitstmnode.   # conversion to SI unit
  ?unitstmnode   psv:P2370               ?unitvaluenode. 
  ?unitvaluenode wikibase:quantityAmount ?conversion.
  ?unitvaluenode wikibase:quantityUnit   wd:Q11573.      # meter
  BIND(?taille * ?conversion AS ?taillem).
 filter(?taillem > 2.25)
 minus {?item wdt:P31 wd:Q190 .}
 }
order by desc (?taillem)
Try it!
#Être humains non-dieux d'au moins 18 ans mesurant moins de 1 mètre.
SELECT DISTINCT ?taille ?item ?naissance ?date ?P585test
WHERE
{
?item wdt:P31 wd:Q5 ;
       wdt:P569 ?naissance ;
       p:P2048 ?t .
 ?t psn:P2048 ?tm ; #unité SI
    rdf:type wikibase:BestRank .
optional {?t pq:P585 ?date.}
 ?tm wikibase:quantityAmount ?taille .
 ?tm wikibase:quantityUnit ?unit.
 FILTER (?taille < 1) #moins de 1 mètre
 BIND(YEAR(NOW()) AS ?year)
 BIND(IF(!BOUND(?date),?year,YEAR(?date)) as ?P585test)
 FILTER (?P585test - YEAR(?naissance) >= 18) #au moins 18 ans
 FILTER( ?item NOT IN (wd:Q15397819, wd:Q13406268, wd:Q4115189, wd:Q190) ) . # bac à sable et pas un-e dieu|déesse
}
ORDER BY (?taille)
Try it!
#Personnes les plus lourdes
SELECT DISTINCT ?itemLabel ?poids ?item WHERE {?item wdt:P31 wd:Q5 ;
                                                   p:P2067 ?valeur .
  minus {?valeur wikibase:rank wikibase:DeprecatedRank}.     
  ?valeur psn:P2067 [wikibase:quantityAmount ?poids; wikibase:quantityUnit ?unit] .
        FILTER(?poids > 440) .
       }
order by desc (?poids)
Try it!
#Durée de vie moyenne par profession ayant plus de 300 éléments recensés
SELECT ?occ ?occLabel ?avgAge ?avgBirthYear ?count
WHERE
{
{
# groupe de personne avec leur âge et profession
SELECT
?occ
(count(?p) as ?count)
(round(avg(?birthYear)) as ?avgBirthYear)
(avg(?deathYear - ?birthYear) as ?avgAge)
WHERE {
{
# personnes avec Get people with occupation + birth/death dates; combine multiple birth/death dates using avg
SELECT
?p
?occ
(avg(year(?birth)) as ?birthYear)
(avg(year(?death)) as ?deathYear)
WHERE {
?p  wdt:P31 wd:Q5 ;
wdt:P106 ?occ ;
p:P569/psv:P569 [
wikibase:timePrecision "9"^^xsd:integer ; # precision of at least year
wikibase:timeValue ?birth ;
] ;
p:P570/psv:P570 [
wikibase:timePrecision "9"^^xsd:integer ; # precision of at least year
wikibase:timeValue ?death ;
] .
}
GROUP BY ?p ?occ
}
}
GROUP BY ?occ
LIMIT 200
}

FILTER (?count > 300) # professions recensant plus de 300 éléments
SERVICE wikibase:label { bd:serviceParam wikibase:language "fr" . }
}
ORDER BY ASC(?avgAge)
Try it!
#humains sans sexe mais avec un prénom sexué
select distinct ?itemLabel ?item ?prenom where
{SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
 ?item wdt:P31 wd:Q5 ;
       wdt:P3280 ?AN ;
       wdt:P735 ?prenom .
 ?prenom wdt:P31 ?nature ;
         #wdt:P31 wd:Q12308941 .
         wdt:P31 wd:Q11879590 .
 minus {?item wdt:P21 ?sexe .}
}group by ?itemLabel ?item ?prenom having(COUNT(DISTINCT ?nature) = 1)
Try it!
#différence de masse entre les partenaires d'un couple, en kg et en ordre décroissant
select ?h1Label ?h2Label ?p1 ?p2 ?diff ?h1 ?h2 where 
{SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
 ?h1 (wdt:P451| wdt:P26) ?h2 .
 FILTER( STR( ?h1 ) < STR( ?h2 ) ) .
 ?h1 p:P2067 ?p1_ .
 ?p1_ psn:P2067 [wikibase:quantityAmount ?p1; wikibase:quantityUnit ?unit1] .
 ?h2 p:P2067 ?p2_ .
 ?p2_ psn:P2067 [wikibase:quantityAmount ?p2; wikibase:quantityUnit ?unit2] .
 bind (abs(?p2-?p1) as ?diff)
 }
order by desc (?diff)
Try it!

Souhaitées[edit]

#un jour peut-être...
select distinct ?itemLabel ?item where {
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". } 
?item wdt:P31 wd:Q13442814 ; #article scientifique
     wdt:P1433 ?pub . #la revue qui l'a publié
minus {?pub wdt:P407 ?lang .} #retirer les revues dont la langue est indiquée
}
limit 10 #comment régler le timeout?
Try it!

Ressources[edit]

Voir

PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

PetScan[edit]

Notes et références[edit]

  1. Traduit de b:en:SPARQL/UNION
  2. Traduction de Wittylama