Aller au contenu principal

Modificateurs de requête : Affiner la recherche

info

Cette page web a été traduite automatiquement par DeepL. Bien que nous nous efforcions d’être précis, nous vous informons que les traductions peuvent contenir des erreurs ou des inexactitudes. Pour obtenir les informations les plus précises, veuillez vous référer à la version original.

SPARQL possède de nombreux mots-clés intégrés qui peuvent être utilisés pour affiner votre recherche. Le tableau ci-dessous fournit une liste de certains des principaux mots-clés ainsi qu'une brève description.

À propos des modificateurs de requête

Il existe de nombreux autres modificateurs que ceux énumérés dans le tableau ci-dessous. Vous trouverez plus d'informations sur ces modificateurs dans la documentation SPARQL des écoles W3 ou dans les WikiBooks SPAQRL.

De nombreux modificateurs peuvent prendre un certain nombre de formats de paramètres différents, tels que les expressions régulières (regex). De plus amples informations sur l'écriture de regex sont disponibles dans les Wikibooks SPARQL, et sur le site Web des écoles W3. Un autre site web pour vous aider à vous familiariser avec l'écriture de regex est Explication des expressions rationnelles.

Il est souvent nécessaire de spécifier les types de données lorsque l'on utilise des valeurs spécifiques comme paramètres pour les modificateurs. Il existe un certain nombre de types de données différents, tels que xsd:integer (un nombre entier), xsd:boolean (une donnée qui est soit vraie, soit fausse), ou xsd:decimal (un nombre avec des valeurs après la virgule). Pour spécifier ces types de données, utilisez le format ^^xsd:datatype.

Par exemple, si nous voulions trouver des personnes dont la date de naissance se situe entre le 1er janvier et le 31 décembre 1884, nous utiliserions une expression rationnelle spécifiant que ces valeurs sont des dates:

FILTER ((?birthDate >= '1844-01-01'^^xsd:date) && (?birthDate <= '1884-12-31' ^^xsd:date))

De plus amples informations sur les types de données de base sont disponibles sur le site W3 Schools XML Schema Pages.

Modificateurs de Requête

Mot-cléObjectifExemple
DISTINCTEmpêche les résultats en double d'être renvoyés.
SELECT DISTINCT ?birthdate ?name WHERE { 
?person cwrc:hasGender cwrc:woman;
cwrc:hasBirthDate ?birthdate;
skos:altLabel ?name.
}

Cette Requête renvoie les noms et les dates de naissance des femmes sans doublon.

BINDAffecte le résultat d'une expression à une variable, en utilisant le format "BIND(expression AS ?variable)."
 SELECT ?name ?birthDate ?deathDate ?age WHERE { 
?person rdfs:label ?name;
cwrc:hasDeathDate ?deathDate;
cwrc:hasBirthDate ?birthDate.
BIND(?deathDate - ?birthDate as ?ageInDays).
BIND(?ageInDays/365.2425 AS ?ageInYears).
BIND(FLOOR(?ageInYears) AS ?age).
}

Cette Requête renvoie les noms et les âges des personnes présentes dans la base de données. L'âge est calculé en utilisant le mot-clé BIND pour attribuer des valeurs à des variables telles que la date de naissance, la date de décès et l'âge en jours, afin que des opérations puissent être effectuées sur ces variables sans les écraser à chaque fois.

FILTER Filtre les résultats en fonction d'une clause fournie. Vous pouvez filtrer en utilisant une expression régulière (regex) qui renverra vrai/faux, une plage de dates, la langue d'un libellé, etc.
SELECT ?name ?birthDate WHERE { 
?person cwrc:hasBirthDate ?birthDate ;
cwrc:hasGender cwrc:woman;
rdfs:label ?name.
FILTER ((?birthDate >= '1900-01-01'^^xsd:date)) .
}

Cette Requête renvoie les noms des femmes dont la date de naissance est postérieure au 1er janvier 1900.

FILTER NOT EXISTFiltre les résultats en renvoyant ceux qui ne répondent pas à la clause fournie.
 SELECT ?name WHERE { 
?person cwrc:hasBirthDate ?birthDate ;
cwrc:hasGender cwrc:woman;
rdfs:label ?name.
FILTER NOT EXISTS {
?person cwrc:hasBirthDate "1775-12-16"^^xsd:date
}
}

Cette Requête renvoie les noms de femmes à l'exception de celles dont la date de naissance est le 16 décembre 1776 (Jane Austen).

GRAPHSpécifie de quel graphique les données seront extraites.
 SELECT ?obj ?snippet WHERE { 
GRAPH {
?context ?pred ?obj;
cwrc:contextFocus ?person;
oa:hasTarget ?target;
rdf:type cwrc:DeathContext.
?person rdfs:label "Donne, John".
}.
?target oa:hasSelector/oa:refinedBy/oa:exact ?snippet.
}

Cette Requête renverra des extraits relatifs à la mort de John Donne. Pour ce faire, il utilise GRAPH pour obtenir le contexte à partir de la base de données BiographyV2Beta dans laquelle il est stocké.

GROUP BYRegroupe les résultats en fonction des critères spécifiés. Après avoir regroupé les résultats, vous pouvez exécuter des fonctions sur ces groupes, telles que COUNT(), AVG(), SUM(), MIN() et MAX(). Pour plus d'informations sur les fonctions d'agrégation, voir ici.
 SELECT ?occupation (COUNT(?person) AS ?numPerProf) WHERE { 
?person cwrc:hasGender cwrc:woman;
cwrc:hasOccupation ?occupation.
}
GROUP BY ?occupation

Cette Requête renvoie les professions des femmes dans CWRC. La requête recherche d'abord toutes les femmes ayant une profession, les regroupe par profession (à l'aide de GROUP BY), puis compte le nombre de personnes dans chaque groupe. Ces chiffres seront affichés dans le tableau des résultats dans une colonne intitulée "numPerProf", c'est-à-dire le nombre de personnes dans chaque profession.

LIMITLimite le nombre de résultats renvoyés. Les résultats seront classés dans un ordre aléatoire, sauf si le mot-clé "ORDER BY" est utilisé.
 SELECT ?name WHERE { 
?person cwrc:hasGender cwrc:woman .
?person rdfs:label ?name .
}LIMIT 10

Cette Requête renvoie les dix premiers noms de femmes.

MINUSSimilaire à FILTER NOT EXISTS ; peut être utilisé pour empêcher certains objets d'être inclus dans les résultats.
 SELECT ?name WHERE {
?person cwrc:hasGender cwrc:woman .
?person rdfs:label ?name .
MINUS {
?person rdfs:label "Askew, Anne".
}.
}

Cette Requête renvoie les noms de femmes, à l'exception de ceux qui s'appellent "Anne Askew".

OFFSETSauter le premier nombre de lignes spécifié par le décalage.
 SELECT ?name WHERE { 
?person cwrc:hasGender cwrc:woman .
?person rdfs:label ?name .

}OFFSET 10

Cette Requête renvoie des noms de femmes, à partir du onzième nom.

OPTIONALRend les critères spécifiés facultatifs. Si l'objet existe, il sera affiché dans les résultats, mais s'il n'existe pas, la cellule des résultats sera simplement vide.
 SELECT ?name ?deathDate WHERE {
?person cwrc:hasGender cwrc:woman;
rdfs:label ?name .
OPTIONAL {?person cwrc:hasDeathDate ?deathDate}.
}

Cette Requête renvoie les noms des femmes et leur date de décès. Si elles n'ont pas de date de décès, leur nom sera toujours affiché, mais la colonne de la date de décès sera vide pour cette ligne.

ORDER BY Trie les données en fonction des valeurs spécifiées. L'ordre par défaut est l'ordre croissant, sauf indication contraire.
 SELECT ?name ?birthDate WHERE {
?person cwrc:hasBirthDate ?birthDate.
?person rdfs:label ?name .

}ORDER BY ?birthDate

Cette Requête renvoie des noms de personnes, classés par date de naissance.

VALUES Permet d'obtenir plus d'une réponse aux critères.
 SELECT ?name ?birthDate WHERE {
VALUES ?name {"Anne" "Mary"}
?person cwrc:hasBirthDate ?birthDate.

}

Cette Requête renvoie des noms, ces noms peuvent être soit Anne, soit Mary.

UNIONPermet de regrouper différents résultats, ainsi que de combiner plusieurs modèles graphiques de manière à ce qu'un seul d'entre eux puisse correspondre.
 SELECT ?name ?occupation WHERE {
?person rdfs:label ?name.
{?person cwrc:hasPaidOccupation ?occupation.}
UNION
{?person cwrc:hasVolunteerOccupation ?occupation.}
}

Cette Requête renvoie les noms et les professions des personnes qui exercent une activité bénévole et des personnes qui exercent une activité rémunérée. En utilisant UNION, les deux types de professions sont affichés dans la même colonne, au lieu d'avoir des colonnes séparées pour chaque type de profession.