User:Adminagr/SPARQL: Difference between revisions
Line 40: | Line 40: | ||
PREFIX wb: <https://data.arch.be/entity/> | PREFIX wb: <https://data.arch.be/entity/> | ||
PREFIX wbt: <https://data.arch.be/prop/direct/> | PREFIX wbt: <https://data.arch.be/prop/direct/> | ||
PREFIX p: <https://data.arch.be/prop/> | PREFIX p: <https://data.arch.be/prop/> | ||
PREFIX ps: <https://data.arch.be/prop/statement> | PREFIX ps: <https://data.arch.be/prop/statement> |
Revision as of 14:32, 13 February 2024
Tester le point d'accès SPARQL avec une requête simple :
SELECT * WHERE { ?a ?b ?c}
Autre requête : utiliser préfixes (où chercher où les indiquer de façon permanente) --> [1]
Propriétés & items
Je veux la liste de toutes les propriétés avec leur intitulé + description en français, néerlandais, anglais, allemand (si disponible) : https://tinyurl.com/2b2p4pcb
- Tous les items possédant une déclaration basée sur une certaine propriété : https://tinyurl.com/2dj84ln2
- Tous les items et propriétés sans P1 (nature de l'élément) : https://tinyurl.com/yqqe346c
- Tous les items sans P1 avec label et éventuelle description en français : https://tinyurl.com/ywf6q2nj
Lieux :
- Tous les lieux dotés d'un identifiant AGR (noms en français), accompagnés de leur code INS et identifiant Wikidata lorsqu'ils sont disponibles https://tinyurl.com/24fntg5e
- Tous les lieux dotés d'un identifiant AGR (noms en français), accompagnés de leur code INS et identifiant Wikidata lorsqu'ils sont disponibles, disposés sur une carte https://tinyurl.com/28ncnnkt
Personnes
- Toutes les personnes : https://tinyurl.com/29b9n5s5
- J’aimerais obtenir la liste de toutes les personnes qui faisaient partie du réseau de résistance Luc-Marc et dont la profession contient le terme “SNCB” ou "NMBS", avec leur domicile s'il est connu. : https://tinyurl.com/ykg9vefz
Organisations : sources externes
Toutes les organisations pour lesquelles existent des renvois vers des sources externes (nom de l'institution) : http://tinyurl.com/2ag4dxar
Version concaténée :
PREFIX wb: <https://data.arch.be/entity/>
PREFIX wbt: <https://data.arch.be/prop/direct/>
PREFIX p: <https://data.arch.be/prop/>
PREFIX ps: <https://data.arch.be/prop/statement>
PREFIX pq: <https://data.arch.be/prop/qualifier>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?organisation ?organisationLabel
(GROUP_CONCAT(DISTINCT CONCAT(?sourceLabel); SEPARATOR="; ") AS ?sources_externes_concatenes)
WHERE {
?organisation wbt:P1/wbt:P9* wb:Q4. # Pour les éléments qui sont des organisations
OPTIONAL {
?organisation rdfs:label ?organisationLabel.
FILTER(LANG(?organisationLabel) = "fr").
}
?organisation wbt:P64 ?source. # Valeur de "sources externes"
?source rdfs:label ?sourceLabel.
FILTER(LANG(?sourceLabel) = "fr").
}
GROUP BY ?organisation ?organisationLabel
Mouvements
- à peaufiner (valeurs multiples concaténées) : https://tinyurl.com/ynkbnwdy
Utile/inspiration
- [FactGrid] tous les items sans P2 : https://tinyurl.com/2cf98rkv
- useful snippets - Katharina Brunner
Test template SPARQL
PREFIX wb: <https://data.arch.be/entity/>
PREFIX wbt: <https://data.arch.be/prop/direct/>
PREFIX wdq: <https://query.wikidata.org/bigdata/namespace/wdq/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?item ?label ?_image WHERE {
?item wbt:P1 wb:Q2.
SERVICE wikibase:label {
bd:serviceParam wikibase:language "fr" .
?item rdfs:label ?label
}
}
Requêtes prêtes à l'emploi
PREFIX wb: <https://data.arch.be/entity/>
PREFIX wbt: <https://data.arch.be/prop/direct/>
# J’aimerais obtenir la liste de toutes les personnes qui faisaient partie du réseau de résistance Luc-Marc et dont la profession contient le terme “SNCB” ou "NMBS", avec leur domicile s'il est connu.
SELECT ?personne ?personneLabel ?domicile ?domicileLabel ?professionLabel WHERE {
?personne wbt:P1 wb:Q2. # je cherche des personnes
?personne wbt:P52 wb:Q4297. # "membres d[u]" (P52) réseau Luc-Marc (Q4297)
?personne wbt:P13 ?profession . # je veux aussi leur profession (P13)
FILTER (CONTAINS(str(?profession),'SNCB')
PREFIX wb: <https://data.arch.be/entity/>
PREFIX wbt: <https://data.arch.be/prop/direct/>
# J’aimerais visualiser sur une carte le domicile des membres du réseau Zéro.
#defaultView:Map
SELECT ?personne ?personneLabel ?domicileLabel ?GPS WHERE {
?personne wbt:P1 wb:Q2. # je cherche des personnes
?personne wbt:P52 wb:Q4378. # "membres d[u]" (P52) réseau Zéro (Q4378)
?personne wbt:P7 ?domicile. # je veux leur domicile
?domicile wbt:P6 ?GPS # ainsi que les coordonnées GPS de leur domicile
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr" } .
}
PREFIX wb: <https://data.arch.be/entity/>
PREFIX wbt: <https://data.arch.be/prop/direct/>
# Je recherche le nom de toutes les femmes nées après 1915 qui ont été reconnues comme agentes de renseignements et d'actions
# j'aimerais également afficher dans une seule colonne les réseaux ou mouvements dont la personne faisait éventuellement partie
SELECT ?personne ?personneLabel
(GROUP_CONCAT(DISTINCT ?appartenanceLabel; SEPARATOR = " ; ") AS ?appartenanceLabels) # je regroupe les noms des réseaux/mouvements par personne pour plus de lisibilité
WHERE {
?personne wbt:P4 wb:Q6. # je cherche des personnes de genre (P4) féminin (Q6)
?personne wbt:P55 wb:Q17. # qui ont obtenu comme statut de reconnaissance nationale (P55) celui d'Agent de renseignement et d'action
OPTIONAL {
?personne wbt:P52 ?appartenance. # j'aimerais également afficher les éventuels réseaux ou mouvements dont la personne faisait partie
?appartenance rdfs:label ?appartenanceLabel} FILTER(lang(?appartenanceLabel) = 'fr') # et je veux récupérer le nom de ces réseaux/mouvements en français
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr" } .
}
GROUP BY ?personne ?personneLabel ?appartenanceLabels
PREFIX wb: <https://data.arch.be/entity/>
PREFIX wbt: <https://data.arch.be/prop/direct/>
PREFIX wdq: <https://query.wikidata.org/bigdata/namespace/wdq/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
# J'aimerais la liste de tous les réseaux/missions/mouvements/organisations civiles de résistance, avec, si disponible : leur date de fondation ; l'allégeance à certains gouvernements ;
# le pays et les lieux associés ; les lieux d'activité ; les types d'activité ; les noms de responsables.
SELECT ?item ?itemLabel ?organisationLabel ?date
(GROUP_CONCAT(DISTINCT ?allégeanceLabel; SEPARATOR = " ; ") AS ?allégeanceLabels) # je regroupe les allégeances pour plus de lisibilité
(GROUP_CONCAT(DISTINCT ?paysLabel; SEPARATOR = " ; ") AS ?paysLabels) # je regroupe les pays associés pour plus de lisibilité
(GROUP_CONCAT(DISTINCT ?lieuxLabel; SEPARATOR = " ; ") AS ?lieuxLabels) # je regroupe les lieux d'activité pour plus de lisibilité
(GROUP_CONCAT(DISTINCT ?typeLabel; SEPARATOR = " ; ") AS ?typeLabels) # je regroupe les types d'activité, pour plus de lisibilité
(GROUP_CONCAT(DISTINCT ?responsableLabel; SEPARATOR = " ; ") AS ?responsableLabels) # je regroupe les noms de responsables pour plus de lisibilité
WHERE {
?item wbt:P1 ?organisation. VALUES ?organisation {wb:Q37 wb:Q6553 wb:Q8464 wb:Q38}. # Je cherche tous les éléments qui sont des réseaux/missions/mouvements/organisations civiles de résistance
OPTIONAL {?item wbt:P39 ?date. FILTER (datatype(?date) = xsd:edtf )} # je veux afficher la date de fondation si elle est disponible (au format EDTF brut)
OPTIONAL {?item wbt:P40 ?allégeance. # j'aimerais également afficher l'allégeance à certains gouvernements s'ils sont sont connus
?allégeance rdfs:label ?allégeanceLabel. FILTER(lang(?allégeanceLabel) = 'fr')} # et je veux récupérer le nom de ces responsables
OPTIONAL {?item wbt:P12 ?pays. # j'aimerais également afficher les pays associés s'ils sont connus
?pays rdfs:label ?paysLabel. FILTER(lang(?paysLabel) = 'fr')} # et je veux récupérer le nom de ces pays en français
OPTIONAL {?item wbt:P61 ?lieux. # j'aimerais également afficher les lieux d'activité associés s'ils sont connus
?lieux rdfs:label ?lieuxLabel. FILTER(lang(?lieuxLabel) = 'fr')} # et je veux récupérer le nom de ces lieux en français
OPTIONAL {?item wbt:P36 ?type. # j'aimerais également afficher les types d'activités s'ils sont connus
?type rdfs:label ?typeLabel. FILTER(lang(?typeLabel) = 'fr')} # et je veux récupérer le nom de ces types d'activités en français
OPTIONAL {?item wbt:P37 ?responsable. # j'aimerais également afficher le noms des responsables s'ils sont sont connus
?responsable rdfs:label ?responsableLabel. FILTER(lang(?responsableLabel) = 'fr')} # et je veux récupérer le nom de ces responsables
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr". }
}
GROUP BY ?item ?itemLabel ?organisationLabel ?allégeanceLabels ?date ?paysLabels ?lieuxLabels ?typeLabels ?responsableLabels
Test Union + NoValue
PREFIX wb: <https://data.arch.be/entity/>
PREFIX wbt: <https://data.arch.be/prop/direct/>
PREFIX wbp: <https://data.arch.be/prop/>
PREFIX wbps: <https://data.arch.be/prop/statement/>
PREFIX wbpq: <https://data.arch.be/prop/qualifier/>
PREFIX wbpqv: <https://data.arch.be/prop/qualifier/value/>
# J'aimerais la liste de toutes les personnes décédées avant 1946 ou non revenues de détention en les classant par province.
SELECT DISTINCT ?personne ?personneLabel ?domicileLabel ?provinceLabel WHERE {
?personne wbt:P1 wb:Q2. # je cherche des personnes
{?personne wbt:P49 ?mort. # dont on sait qu'elles sont décédées avant 1946
FILTER("1946-01-01"^^xsd:dateTime < ?mort).} #
UNION
{?personne wbp:P53 ?detention_statement. # je cherche celles qui ont été gardées en détention
?detention_statement wbps:P53 ?detention. } filter not exists{?detention_statement wbpq:P25 ?fin_detention}
?personne wbt:P7 ?domicile.
?domicile wbt:P14* ?province.
FILTER(EXISTS { ?province wbt:P1 wb:Q43. })
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr". }
}
ORDER BY ?province
LIMIT 100