Requetes sparql: Difference between revisions

From wikibase
 
(8 intermediate revisions by the same user not shown)
Line 1: Line 1:
= Quelques définitions =
= Quelques définitions =


* Label : Le nom donné à un item ou une propriété.
* Label : Nom donné à une entité (item) ou à une propriété.
* Item : Entités représentant une chose ou un concept ou une personne à laquelle on associe des informations.
* Entité : Appelée « item » dans les requêtes. Représente une personne, un lieu, une langue ou un concept auquel on associe des informations.
* Qid : Identifiant unique qui permet de reconnaître une entité sans dépendre de son label.
* QID : Identifiant unique permettant de reconnaître une entité sans dépendre de son label.
* Propriété : Type de relation ou caractéristiques utilisé pour décrire un item.
* Propriété : Type de relation ou caractéristique utilisée pour décrire une entité.
* Pid : Identifiant unique qui permet de reconnaître une propriété sans dépendre de son label.
* PID : Identifiant unique permettant de reconnaître une propriété sans dépendre de son label.
* Requête SPARQL : Permet d'interroger des données en utilisant des relations entre items et propriétés.
* Requête SPARQL : Permet d’interroger des données en utilisant des relations entre entités et propriétés.
 
=== Dans les requêtes SPARQL ===
 
* SELECT : Permet de choisir les informations (variables) que l’on veut afficher dans le résultat.
* WHERE : Contient les conditions de la requête (les relations entre entités et propriétés).
* ?variable : Une variable représente une valeur inconnue que l’on cherche à récupérer.
* wd : Préfixe utilisé pour désigner les entités (items).
* wdt : Préfixe utilisé pour désigner les propriétés.
* GROUP BY : Permet de regrouper les résultats selon certaines valeurs.
* HAVING : Permet de filtrer les résultats après un GROUP BY.
* FILTER : Permet de filtrer les résultats selon certaines conditions.
* FILTER NOT EXISTS : Permet de garder uniquement les résultats pour lesquels une condition n’existe pas.
* ORDER BY : Trier les résultats
** ASC : Trier les résultats par ordre croissant (de A à Z, de 1 à 9).
** DESC : Trier les résultats par ordre décroissant (de Z à A, de 9 à 1).
* UNION : Permet de combiner plusieurs conditions, équivalent de "ou".
* OPTIONAL : Permet d’inclure une information si elle existe, sans exclure le résultat si elle est absente.
* LIMIT : Définir le nombre de résultats à afficher.
* DISTINCT : Permet de supprimer les doublons dans les résultats.
* COUNT : Permet de compter le nombre de résultats.
 
 
=== Convention de nommage des variables ===
 
* ?item : Représente une entité, identifiée par une URI dans la Wikibase.
* ?itemLabel : Le nom (label) de l’entité, lisible par un humain.
 
* ?propriete : Représente une propriété utilisée dans une relation, identifiée par une URI dans la Wikibase.
* ?proprieteLabel : Le nom (label) de la propriété.
 
* ?valeur : La valeur associée à une propriété pour une entité. Cette valeur peut être une entité ou une donnée (texte, date, nombre, etc.).
* ?valeurLabel : Le nom (label) de cette valeur si elle est une entité.
 
Remarque : Les noms des variables sont libres, mais ces conventions sont couramment utilisées pour faciliter la lecture des requêtes.


= Requêtes SPARQL de base =
= Requêtes SPARQL de base =
Line 14: Line 48:
Récupère toutes les entités avec leur label français et anglais.
Récupère toutes les entités avec leur label français et anglais.


<sparql tryit="1" title="Toutes les entitées">
<sparql tryit="1" title="Toutes les entités">
SELECT ?itemLabel ?item
SELECT ?itemLabel ?item
WHERE {
WHERE {
  # Les entités (?item) qui possèdent au moins un lien vers le Wikibase
   ?item wikibase:sitelinks [] .
   ?item wikibase:sitelinks [] .
   # Récupère le label de la propriété en français, anglais
   # Récupère le label en français, anglais
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}
}
Line 31: Line 66:
WHERE {
WHERE {
     ?propriete a wikibase:Property .
     ?propriete a wikibase:Property .
     # Récupère le label de la propriété en français, anglais
     # Récupère le label en français, anglais
     SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
     SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}
}
Line 38: Line 73:


== Rechercher par propriétés ==
== Rechercher par propriétés ==
Récupérer les entités possédant une propriété précise (ex. : P1 – nature de l’élément) et indiquer l’entité associée à cette propriété.  
Récupère les entités possédant une propriété précise (ex. : P1 – nature de l’élément) et indiquer l’entité associée à cette propriété.  


<sparql tryit="1">
<sparql tryit="1">
Line 45: Line 80:
WHERE {
WHERE {
   ?item wdt:P1 ?valeur .
   ?item wdt:P1 ?valeur .
   # Récupère le label de la propriété en français, anglais
   # Récupère le label en français, anglais
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}
}
</sparql>
</sparql>
Récupère toutes les propriétés d'une entité précise (ex : Q1000 - Thomas Arthus).
Récupère toutes les propriétés d'une entité précise (ex : Q1000 - Thomas Arthus).


<sparql tryit="1">
<sparql tryit="1">
SELECT ?propriete ?proprieteLabel ?valeur ?valeurLabel
SELECT ?propriete ?proprieteLabel ?valeur ?valeurLabel
WHERE {
WHERE {
Line 62: Line 100:
   FILTER(STRSTARTS(STR(?propriete), STR(wdt:)))
   FILTER(STRSTARTS(STR(?propriete), STR(wdt:)))
    
    
   # Récupère le label de la propriété en français
   # Récupère le label en français
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr".    ?propEntite rdfs:label ?proprieteLabel .
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr".    ?propEntite rdfs:label ?proprieteLabel .
   }
   }
Line 73: Line 111:
GROUP BY ?propriete ?proprieteLabel ?valeur ?valeurLabel
GROUP BY ?propriete ?proprieteLabel ?valeur ?valeurLabel
ORDER BY ?proprieteLabel
ORDER BY ?proprieteLabel
</sparql>
</sparql>


Récupérer les items possédant simultanément plusieurs propriétés (ex : P58 - identifiant data.biblissima, P86 - identifiant GeoNames).
Récupère les items possédant simultanément plusieurs propriétés (ex : P58 - identifiant data.biblissima, P86 - identifiant GeoNames).


<sparql tryit="1">
<sparql tryit="1">
Line 83: Line 122:
   ?item wdt:P58 ?valeur1 .
   ?item wdt:P58 ?valeur1 .
   ?item wdt:P86 ?valeur2 .
   ?item wdt:P86 ?valeur2 .
   # Récupère le label de la propriété en français, anglais
   # Récupère le label en français, anglais
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}
}
</sparql>
</sparql>
Récupérer les items possédant au moins une des propriétés spécifiées (ex : P58 - identifiant data.biblissima, P86 - identifiant GeoNames.
Récupère les items possédant au moins une des propriétés spécifiées (ex : P58 - identifiant data.biblissima, P86 - identifiant GeoNames.


<sparql tryit="1">
<sparql tryit="1">
Line 96: Line 135:
   UNION
   UNION
   { ?item wdt:P5 ?valeur . }
   { ?item wdt:P5 ?valeur . }
   # Récupère le label de la propriété en français, anglais
   # Récupère le label en français, anglais
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}
}
</sparql>
</sparql>


Récupérer les items associés à une propriété (ex : P10 sexe et genre).
Récupère les items associés à une propriété (ex : P10 sexe et genre).
<sparql tryit="1>
PREFIX wd:      <http://localhost/entity/>
PREFIX wdt:      <http://localhost/prop/direct/>
PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX bd:      <http://www.bigdata.com/rdf#>
PREFIX rdfs:    <http://www.w3.org/2000/01/rdf-schema#>


<sparql tryit="1">
SELECT ?valeurLabel ?valeur
SELECT ?valeurLabel ?valeur
WHERE {
WHERE {
   ?item wdt:P10 ?valeur .
   ?item wdt:P10 ?valeur .
   # Récupère le label de la propriété en français, anglais
   # Récupère le label en français, anglais
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}
}
GROUP BY ?valeurLabel ?valeur
GROUP BY ?valeurLabel ?valeur
</sparql>
</sparql>


== Recherche par label ==
== Recherche par label ==
Trouve une entité à partir de son nom (ex : Châteauroux (Indre, France)). Attention, le label doit être identique, sensible à la casse.
Trouve une entité à partir de son nom (ex : Châteauroux (Indre, France)). Attention, le label doit être identique, sensible à la casse.


Line 126: Line 162:
WHERE {
WHERE {
   ?item rdfs:label "Châteauroux (Indre, France)"@fr .
   ?item rdfs:label "Châteauroux (Indre, France)"@fr .
   # Récupère le label de la propriété en français, anglais
   # Récupère le label en français, anglais
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}
}
Line 137: Line 173:
WHERE {
WHERE {
   ?propriete rdfs:label "date de naissance"@fr .
   ?propriete rdfs:label "date de naissance"@fr .
   # Récupère le label de la propriété en français, anglais
   # Récupère le label en français, anglais
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en".
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
   }
   }
}
}
Line 146: Line 182:
== Compter le nombre d'entités ==
== Compter le nombre d'entités ==


Récupérer le nombre d'entités possédant une propriété précise (ex : P1 - nature de l'élément). Trier par ordre décroissant.
Récupère le nombre d'entités possédant une propriété précise (ex : P1 - nature de l'élément). Trier par ordre décroissant.


<sparql tryit="1">
<sparql tryit="1">
Line 152: Line 188:
WHERE {
WHERE {
   ?item wdt:P1 ?valeur .
   ?item wdt:P1 ?valeur .
   # Récupère le label de la propriété en français, anglais
   # Récupère le label en français, anglais
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}
}
Line 160: Line 196:
</sparql>
</sparql>


Récupérer le nombre d'occurrences par propriété.
Principales entitées
<sparql tryit="1">
SELECT ?Categorie (COUNT(?item) AS ?Nombre)
WHERE {
 
  VALUES (?type ?Categorie) {
    (wd:Q6 "Personnes")
    (wd:Q7 "Collectivitées")
    (wd:Q8 "Familles")
    (wd:Q2 "Lieux")
  }
 
  ?item wdt:P1 ?type .
}
GROUP BY ?Categorie
</sparql>
 
Récupère le nombre d'occurrences par propriété.


<sparql tryit="1">
<sparql tryit="1">
Line 175: Line 228:


= Requêtes SPARQL avec des filtres =
= Requêtes SPARQL avec des filtres =
== Recherche avec une ou plusieurs lettres ==
== Recherche avec un ou plusieurs lettres ==


Récupérer les entités commençant par une ou plusieurs lettres dans une langue précise (ex :"an", langue française).  
Récupère les entités commençant par une ou plusieurs lettres dans une langue précise (ex :"an", en français).  


<sparql tryit="1">
<sparql tryit="1">
Line 189: Line 242:
</sparql>
</sparql>


Récupérer les entités qui contiennent une ou plusieurs lettres dans une langue précise (ex :"z", langue française).
Récupère les entités qui contiennent une ou plusieurs lettres dans une langue précise (ex :"z", en français).
   
   
<sparql tryit="1">
<sparql tryit="1">
Line 202: Line 255:
</sparql>
</sparql>


Récupérer les entités finissant par une ou plusieurs lettres dans une langue précise (ex : "an", langue française).
Récupère les entités finissant par une ou plusieurs lettres dans une langue précise (ex : "an", en français).


<sparql tryit="1">
<sparql tryit="1">
Line 211: Line 264:
   # Filtre sur la langue
   # Filtre sur la langue
   FILTER(LANG(?itemLabel) = "fr")
   FILTER(LANG(?itemLabel) = "fr")
}
</sparql>
== Recherche par propriété et valeur de cette propriété ==
Récupère les entités qui présentent une valeur précise (ici P29 = Q3691 soit Langue d'expression = Grec ancien)<sparql tryit="1">
SELECT ?item ?itemLabel ?valeurLabel
WHERE {
  ?item wdt:P29 wd:Q3691 .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}
</sparql>
Récupère les entités qui possèdent une propriété dont la valeur ne dépasse pas la longueur définie (ici IDREF avec moins de 9 caractères)<sparql tryit="1">
SELECT DISTINCT ?entity ?p61Value WHERE {
  ?entity wdt:P63 ?p61Value .
  FILTER(STRLEN(STR(?p61Value)) < 9)
}
}
</sparql>
</sparql>
Line 216: Line 287:
== Entités par nombre de propriétés ==
== Entités par nombre de propriétés ==


Récupérer les entités qui contiennent un nombre minimum de propriétés. (ex : 3).
Récupère les entités qui contiennent un nombre minimum de propriétés. (ex : 3).


<sparql tryit="1">
<sparql tryit="1">
Line 224: Line 295:
   ?item ?propriete ?valeur .
   ?item ?propriete ?valeur .
   FILTER(STRSTARTS(STR(?propriete), STR(wdt:)))
   FILTER(STRSTARTS(STR(?propriete), STR(wdt:)))
   # Récupère le label de la propriété en français, anglais
   # Récupère le label en français, anglais
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}
}
Line 232: Line 303:
</sparql>
</sparql>


Récupérer les entités qui contiennent un certain nombre de propriétés. (ex : 2).
Récupère les entités qui contiennent un certain nombre de propriétés. (ex : 2).


<sparql tryit="1">
<sparql tryit="1">
Line 240: Line 311:
   ?item ?propriete ?valeur .
   ?item ?propriete ?valeur .
   FILTER(STRSTARTS(STR(?propriete), STR(wdt:)))
   FILTER(STRSTARTS(STR(?propriete), STR(wdt:)))
   # Récupère le label de la propriété en français, anglais
   # Récupère le label en français, anglais
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}
}
Line 248: Line 319:
</sparql>
</sparql>


Récupérer les entités qui contiennent un nombre maximum ou égal  de propriétés. (ex : 6).
Récupère les entités qui contiennent un nombre maximum (ou égal) de propriétés. (ex : 6).


<sparql tryit="1">
<sparql tryit="1">
Line 256: Line 327:
   ?item ?propriete ?valeur .
   ?item ?propriete ?valeur .
   FILTER(STRSTARTS(STR(?propriete), STR(wdt:)))
   FILTER(STRSTARTS(STR(?propriete), STR(wdt:)))
   # Récupère le label de la propriété en français, anglais
   # Récupère le label en français, anglais
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}
}
Line 282: Line 353:
     ?propriete wikibase:qualifier ?propQual .
     ?propriete wikibase:qualifier ?propQual .
   }
   }
   # Récupère le label de la propriété en français, anglais
   # Récupère le label en français, anglais
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
   SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}
}
Line 330: Line 401:
== Label en double ==
== Label en double ==


Récupérer les entités qui partagent exactement le même label dans une langue précise pour détecter les saisies en double. Attention, cela cumule les entités et les propriétés.
Récupère les entités qui partagent exactement le même label dans une langue précise pour détecter les saisies en double. Attention, cela cumule les entités et les propriétés.


<sparql tryit="1">
<sparql tryit="1">
Line 362: Line 433:
== Entités sans aucun identifiant externe ==
== Entités sans aucun identifiant externe ==


Afficher les items (ayant n'ature de l'élement agent et personne) qui ne possèdent pas ces identifiants externes (ex : Biblissima).
Afficher les items (ayant pour nature de l'élément agent et personne) qui ne possèdent pas ces identifiants externes (ex : Biblissima).


<sparql tryit="1">
<sparql tryit="1">
Line 381: Line 452:
</sparql>
</sparql>


Afficher les items (ayant n'ature de l'élement agent et personne)) qui ne possèdent aucun des 37 identifiants externes référencés.
Afficher les items (ayant pour nature de l'élément agent et personne) qui ne possèdent aucun des 37 identifiants externes référencés.


<sparql  tryit="1">
<sparql  tryit="1">

Latest revision as of 07:43, 20 May 2026

Quelques définitions

  • Label : Nom donné à une entité (item) ou à une propriété.
  • Entité : Appelée « item » dans les requêtes. Représente une personne, un lieu, une langue ou un concept auquel on associe des informations.
  • QID : Identifiant unique permettant de reconnaître une entité sans dépendre de son label.
  • Propriété : Type de relation ou caractéristique utilisée pour décrire une entité.
  • PID : Identifiant unique permettant de reconnaître une propriété sans dépendre de son label.
  • Requête SPARQL : Permet d’interroger des données en utilisant des relations entre entités et propriétés.

Dans les requêtes SPARQL

  • SELECT : Permet de choisir les informations (variables) que l’on veut afficher dans le résultat.
  • WHERE : Contient les conditions de la requête (les relations entre entités et propriétés).
  • ?variable : Une variable représente une valeur inconnue que l’on cherche à récupérer.
  • wd : Préfixe utilisé pour désigner les entités (items).
  • wdt : Préfixe utilisé pour désigner les propriétés.
  • GROUP BY : Permet de regrouper les résultats selon certaines valeurs.
  • HAVING : Permet de filtrer les résultats après un GROUP BY.
  • FILTER : Permet de filtrer les résultats selon certaines conditions.
  • FILTER NOT EXISTS : Permet de garder uniquement les résultats pour lesquels une condition n’existe pas.
  • ORDER BY : Trier les résultats
    • ASC : Trier les résultats par ordre croissant (de A à Z, de 1 à 9).
    • DESC : Trier les résultats par ordre décroissant (de Z à A, de 9 à 1).
  • UNION : Permet de combiner plusieurs conditions, équivalent de "ou".
  • OPTIONAL : Permet d’inclure une information si elle existe, sans exclure le résultat si elle est absente.
  • LIMIT : Définir le nombre de résultats à afficher.
  • DISTINCT : Permet de supprimer les doublons dans les résultats.
  • COUNT : Permet de compter le nombre de résultats.


Convention de nommage des variables

  • ?item : Représente une entité, identifiée par une URI dans la Wikibase.
  • ?itemLabel : Le nom (label) de l’entité, lisible par un humain.
  • ?propriete : Représente une propriété utilisée dans une relation, identifiée par une URI dans la Wikibase.
  • ?proprieteLabel : Le nom (label) de la propriété.
  • ?valeur : La valeur associée à une propriété pour une entité. Cette valeur peut être une entité ou une donnée (texte, date, nombre, etc.).
  • ?valeurLabel : Le nom (label) de cette valeur si elle est une entité.

Remarque : Les noms des variables sont libres, mais ces conventions sont couramment utilisées pour faciliter la lecture des requêtes.

Requêtes SPARQL de base

Lister toutes les entités ou propriétés

Récupère toutes les entités avec leur label français et anglais.

SELECT ?itemLabel ?item
WHERE {
  # Les entités (?item) qui possèdent au moins un lien vers le Wikibase
  ?item wikibase:sitelinks [] .
  # Récupère le label en français, anglais
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}

Try it!


Récupère toutes les propriétés avec leur label français et anglais.

SELECT ?proprieteLabel ?propriete
WHERE {
    ?propriete a wikibase:Property .
    # Récupère le label en français, anglais
    SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}

Try it!


Rechercher par propriétés

Récupère les entités possédant une propriété précise (ex. : P1 – nature de l’élément) et indiquer l’entité associée à cette propriété.

SELECT ?item ?itemLabel ?valeurLabel ?valeur
WHERE {
  ?item wdt:P1 ?valeur .
  # Récupère le label en français, anglais
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}

Try it!


Récupère toutes les propriétés d'une entité précise (ex : Q1000 - Thomas Arthus).

SELECT ?propriete ?proprieteLabel ?valeur ?valeurLabel
WHERE {
  wd:Q1000 ?propriete ?valeur .
  
  # Relie l'URI de la propriété à son entité pour pouvoir récupérer son label
  ?propEntite wikibase:directClaim ?propriete .
  
  # Garde uniquement les propriétés définies dans la Wikibase
  FILTER(STRSTARTS(STR(?propriete), STR(wdt:)))
  
  # Récupère le label en français
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr".    ?propEntite rdfs:label ?proprieteLabel .
  }
  # Si la valeur est un item, récupère son label en français
  OPTIONAL {
    ?valeur rdfs:label ?valeurLabel .
    FILTER(LANG(?valeurLabel) IN ("fr"))
  }
}
GROUP BY ?propriete ?proprieteLabel ?valeur ?valeurLabel
ORDER BY ?proprieteLabel

Try it!


Récupère les items possédant simultanément plusieurs propriétés (ex : P58 - identifiant data.biblissima, P86 - identifiant GeoNames).

SELECT DISTINCT ?itemLabel ?item
WHERE {
  ?item wdt:P58 ?valeur1 .
  ?item wdt:P86 ?valeur2 .
  # Récupère le label en français, anglais
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}

Try it!

Récupère les items possédant au moins une des propriétés spécifiées (ex : P58 - identifiant data.biblissima, P86 - identifiant GeoNames.

SELECT ?itemLabel ?item
WHERE {
  { ?item wdt:P1 ?valeur . }
  UNION
  { ?item wdt:P5 ?valeur . }
  # Récupère le label en français, anglais
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}

Try it!


Récupère les items associés à une propriété (ex : P10 sexe et genre).

SELECT ?valeurLabel ?valeur
WHERE {
  ?item wdt:P10 ?valeur .
  # Récupère le label en français, anglais
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}
GROUP BY ?valeurLabel ?valeur

Try it!


Recherche par label

Trouve une entité à partir de son nom (ex : Châteauroux (Indre, France)). Attention, le label doit être identique, sensible à la casse.

SELECT ?itemLabel ?item
WHERE {
  ?item rdfs:label "Châteauroux (Indre, France)"@fr .
  # Récupère le label en français, anglais
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}

Try it!


Trouve une propriété à partir de son nom. Attention, le label doit être identique, sensible à la casse.

SELECT ?proprieteLabel ?propriete
WHERE {
  ?propriete rdfs:label "date de naissance"@fr .
  # Récupère le label en français, anglais
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
  }
}

Try it!


Requêtes SPARQL pour des statistiques

Compter le nombre d'entités

Récupère le nombre d'entités possédant une propriété précise (ex : P1 - nature de l'élément). Trier par ordre décroissant.

SELECT (COUNT(?item) AS ?nombre) ?valeurLabel ?valeur
WHERE {
  ?item wdt:P1 ?valeur .
  # Récupère le label en français, anglais
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}
GROUP BY ?valeur ?valeurLabel
# Ordre décroissant DESC | ordre croissant ASC
ORDER BY DESC(?nombre)

Try it!


Principales entitées

SELECT ?Categorie (COUNT(?item) AS ?Nombre)
WHERE {

  VALUES (?type ?Categorie) {
    (wd:Q6 "Personnes")
    (wd:Q7 "Collectivitées")
    (wd:Q8 "Familles")
    (wd:Q2 "Lieux")
  }

  ?item wdt:P1 ?type .
}
GROUP BY ?Categorie

Try it!


Récupère le nombre d'occurrences par propriété.

SELECT (COUNT(*) AS ?count) ?proprieteLabel ?propriete 
WHERE {
  ?item ?prop ?valeur .
  ?propriete wikibase:directClaim ?prop .

  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}
GROUP BY ?propriete ?proprieteLabel
ORDER BY DESC(?count)

Try it!


Requêtes SPARQL avec des filtres

Recherche avec un ou plusieurs lettres

Récupère les entités commençant par une ou plusieurs lettres dans une langue précise (ex :"an", en français).

SELECT ?itemLabel ?item
WHERE {
  ?item rdfs:label ?itemLabel .
  FILTER(STRSTARTS(LCASE(?itemLabel), "an"))
  # Filtre sur la langue
  FILTER(LANG(?itemLabel) = "fr")
}

Try it!


Récupère les entités qui contiennent une ou plusieurs lettres dans une langue précise (ex :"z", en français).

SELECT ?itemLabel ?item
WHERE {
  ?item rdfs:label ?itemLabel .
  # Changer la lettre entre les points
  FILTER(CONTAINS(LCASE(?itemLabel), "z"))
  # Filtre sur la langue
  FILTER(LANG(?itemLabel) = "fr")
}

Try it!


Récupère les entités finissant par une ou plusieurs lettres dans une langue précise (ex : "an", en français).

SELECT ?itemLabel ?item
WHERE {
  ?item rdfs:label ?itemLabel .
  FILTER(STRENDS(LCASE(?itemLabel), "an"))
  # Filtre sur la langue
  FILTER(LANG(?itemLabel) = "fr")
}

Try it!


Recherche par propriété et valeur de cette propriété

Récupère les entités qui présentent une valeur précise (ici P29 = Q3691 soit Langue d'expression = Grec ancien)

SELECT ?item ?itemLabel ?valeurLabel
WHERE {
  ?item wdt:P29 wd:Q3691 .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}

Try it!


Récupère les entités qui possèdent une propriété dont la valeur ne dépasse pas la longueur définie (ici IDREF avec moins de 9 caractères)

SELECT DISTINCT ?entity ?p61Value WHERE {
  ?entity wdt:P63 ?p61Value .
  FILTER(STRLEN(STR(?p61Value)) < 9)
}

Try it!


Entités par nombre de propriétés

Récupère les entités qui contiennent un nombre minimum de propriétés. (ex : 3).

SELECT (COUNT(?propriete) AS ?nombreProprietes) ?itemLabel ?item 
WHERE {
  ?item wikibase:sitelinks [] .
  ?item ?propriete ?valeur .
  FILTER(STRSTARTS(STR(?propriete), STR(wdt:)))
  # Récupère le label en français, anglais
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}
GROUP BY ?item ?itemLabel
HAVING(COUNT(?propriete) < 3)
ORDER BY ASC(?nombreProprietes)

Try it!


Récupère les entités qui contiennent un certain nombre de propriétés. (ex : 2).

SELECT (COUNT(?propriete) AS ?nombreProprietes) ?itemLabel ?item 
WHERE {
  ?item wikibase:sitelinks [] .
  ?item ?propriete ?valeur .
  FILTER(STRSTARTS(STR(?propriete), STR(wdt:)))
  # Récupère le label en français, anglais
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}
GROUP BY ?item ?itemLabel
HAVING(COUNT(?propriete) = 2)
ORDER BY ASC(?nombreProprietes)

Try it!


Récupère les entités qui contiennent un nombre maximum (ou égal) de propriétés. (ex : 6).

SELECT (COUNT(?propriete) AS ?nombreProprietes) ?itemLabel ?item 
WHERE {
  ?item wikibase:sitelinks [] .
  ?item ?propriete ?valeur .
  FILTER(STRSTARTS(STR(?propriete), STR(wdt:)))
  # Récupère le label en français, anglais
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}
GROUP BY ?item ?itemLabel
HAVING(COUNT(?propriete) >= 6)
ORDER BY ASC(?nombreProprietes)

Try it!


Propriétés qui n'ont aucune entité

Identifie les propriétés qui ne sont associées à aucune entité. Utile pour contrôler la qualité des données et repérer ce qui manque dans la Wikibase.

SELECT ?proprieteLabel ?propriete
WHERE {
  ?propriete a wikibase:Property .
  # Jamais utilisée en tant que propriété directe
  FILTER NOT EXISTS {
    ?item ?prop ?valeur .
    ?propriete wikibase:directClaim ?prop .
  }
  # Jamais utilisée en tant que qualificatif
  FILTER NOT EXISTS {
    ?statement ?propQual ?valeurQual .
    ?propriete wikibase:qualifier ?propQual .
  }
  # Récupère le label en français, anglais
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en". }
}

Try it!


Combinaison de plusieurs propriétés avec une lettre

Récupère les items possédant deux propriétés dont le label commence par une lettre donnée (ex : "b", P58 - identifiant data.biblissima, P86 - identifiant GeoNames, langue française).

SELECT DISTINCT ?itemLabel ?item
WHERE {
  ?item wdt:P58 ?valeur1 .
  ?item wdt:P86 ?valeur2 .
  ?item rdfs:label ?itemLabel .
  FILTER(LANG(?itemLabel) = "fr")
  FILTER(STRSTARTS(LCASE(?itemLabel), "b"))
}

Try it!


Récupère les items possédant deux propriétés dont le label contient une lettre donnée (ex : "y",P58 - identifiant data.biblissima, P86 - identifiant GeoNames, langue française).

SELECT DISTINCT ?itemLabel ?item
WHERE {
  ?item wdt:P58 ?valeur1 .
  ?item wdt:P86 ?valeur2 .
  ?item rdfs:label ?itemLabel .
  FILTER(LANG(?itemLabel) = "fr")
  FILTER(CONTAINS(LCASE(?itemLabel), "y"))
}

Try it!


Récupère les items possédant deux propriétés dont le label finit par une lettre donnée (ex : "n", P58 - identifiant data.biblissima, P86 - identifiant GeoNames, langue française).

SELECT DISTINCT ?itemLabel ?item
WHERE {
  ?item wdt:P58 ?valeur1 .
  ?item wdt:P86 ?valeur2 .
  ?item rdfs:label ?itemLabel .
  FILTER(LANG(?itemLabel) = "fr")
  FILTER(STRENDS(LCASE(?itemLabel), "n"))
}

Try it!


Label en double

Récupère les entités qui partagent exactement le même label dans une langue précise pour détecter les saisies en double. Attention, cela cumule les entités et les propriétés.

SELECT ?label (COUNT(?item) AS ?nombre) (GROUP_CONCAT(?item ; separator=", ") AS ?items)
WHERE {
  ?item rdfs:label ?label .
  FILTER(LANG(?label) = "fr")
}
GROUP BY ?label
HAVING(COUNT(?item) > 1)
ORDER BY DESC(?nombre)

Try it!


Entités n'ayant pas une propriété

Afficher les items (P1 = Q5) qui ne possèdent pas ces propriétés.

SELECT DISTINCT ?itemLabel ?item
WHERE {
  ?item wdt:P1 wd:Q5 .

  ?item rdfs:label ?itemLabel .
  FILTER(LANG(?itemLabel) = "fr")

  FILTER NOT EXISTS { ?item wdt:P10 ?v . }

}

Try it!


Entités sans aucun identifiant externe

Afficher les items (ayant pour nature de l'élément agent et personne) qui ne possèdent pas ces identifiants externes (ex : Biblissima).

SELECT DISTINCT ?itemLabel ?item
WHERE {
  ?item wdt:P1 wd:Q5 .
  ?item wdt:P1 wd:Q6 .
  ?item rdfs:label ?itemLabel .
  FILTER(LANG(?itemLabel) = "fr")
  # Vérifie qu'aucune des propriétés externes n'est présente
  FILTER NOT EXISTS {
    VALUES ?propExt {
      wdt:P58 wdt:P59 
    }
    ?item ?propExt ?v .
  }
}

Try it!


Afficher les items (ayant pour nature de l'élément agent et personne) qui ne possèdent aucun des 37 identifiants externes référencés.

SELECT DISTINCT ?itemLabel ?item
WHERE {
  ?item wdt:P1 wd:Q5 .
  ?item wdt:P1 wd:Q6 .

  ?item rdfs:label ?itemLabel .
  FILTER(LANG(?itemLabel) = "fr")

  # Vérifie qu'aucune des propriétés externes n'est présente
  FILTER NOT EXISTS {
    VALUES ?propExt {
      wdt:P58 wdt:P59 wdt:P60 wdt:P61 wdt:P62 wdt:P63 wdt:P64
      wdt:P65 wdt:P66 wdt:P67 wdt:P68 wdt:P69 wdt:P70 wdt:P71
      wdt:P72 wdt:P73 wdt:P74 wdt:P75 wdt:P76 wdt:P77 wdt:P78
      wdt:P79 wdt:P80 wdt:P81 wdt:P82 wdt:P83 wdt:P84 wdt:P85
      wdt:P86 wdt:P87 wdt:P88 wdt:P89 wdt:P90 wdt:P91 wdt:P92
      wdt:P93 wdt:P94
    }
    ?item ?propExt ?v .
  }
}

Try it!