User:Simon Villeneuve/SPARQL

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

#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!
#É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!
#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!
#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
#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!
#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!
#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!
#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!
#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

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!

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