User:Adminagr/SPARQL: Difference between revisions
Line 88: | Line 88: | ||
} | } | ||
GROUP BY ?organisation ?organisationLabel | GROUP BY ?organisation ?organisationLabel | ||
}} | |||
Idem, avec la cote entre crochets après le nom du fonds : | |||
{{SPARQL|query = | |||
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 rdfs: <http://www.w3.org/2000/01/rdf-schema#> | |||
SELECT ?organisation ?organisationLabel (GROUP_CONCAT(CONCAT(?sourceLabel, IF(BOUND(?nom), CONCAT(" (", ?nom, ")"), ""), IF(BOUND(?cote), CONCAT(" [", ?cote, "]"), "")); separator=" / ") AS ?sources_externes) | |||
WHERE { | |||
?organisation wbt:P1/wbt:P9* wb:Q4. # Pour les éléments qui sont des organisations | |||
?organisation wbp:P64 ?statement. # Valeur de "sources externes" | |||
?statement wbps:P64 ?source. | |||
?source rdfs:label ?sourceLabel. | |||
OPTIONAL {?statement wbpq:P66 ?nom.} | |||
OPTIONAL {?statement wbpq:P35 ?cote.} | |||
FILTER(LANG(?sourceLabel) = "fr") | |||
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". } | |||
} | } | ||
GROUP BY ?organisation ?organisationLabel | |||
}} | |||
==== Mouvements ==== | ==== Mouvements ==== |
Revision as of 08:36, 14 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
Requête pour obtenir la liste de toutes les organisations pour lesquelles existent des renvois vers des sources externes (nom de l'institution suivi de l'intitulé du fonds).
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 rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?organisation ?organisationLabel (GROUP_CONCAT(CONCAT(?sourceLabel, IF(BOUND(?nom), CONCAT(" [", ?nom, "]"), "")); separator=", ") AS ?sources_externes)
WHERE {
?organisation wbt:P1/wbt:P9* wb:Q4. # Pour les éléments qui sont des organisations
?organisation wbp:P64 ?statement. # Valeur de "sources externes"
?statement wbps:P64 ?source.
?source rdfs:label ?sourceLabel.
OPTIONAL {?statement wbpq:P66 ?nom.}
FILTER(LANG(?sourceLabel) = "fr")
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
GROUP BY ?organisation ?organisationLabel
Idem, avec la cote entre crochets après le nom du fonds :
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 rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?organisation ?organisationLabel (GROUP_CONCAT(CONCAT(?sourceLabel, IF(BOUND(?nom), CONCAT(" (", ?nom, ")"), ""), IF(BOUND(?cote), CONCAT(" [", ?cote, "]"), "")); separator=" / ") AS ?sources_externes)
WHERE {
?organisation wbt:P1/wbt:P9* wb:Q4. # Pour les éléments qui sont des organisations
?organisation wbp:P64 ?statement. # Valeur de "sources externes"
?statement wbps:P64 ?source.
?source rdfs:label ?sourceLabel.
OPTIONAL {?statement wbpq:P66 ?nom.}
OPTIONAL {?statement wbpq:P35 ?cote.}
FILTER(LANG(?sourceLabel) = "fr")
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
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