SPARQL: Difference between revisions

From Resistance in Belgium
Line 385: Line 385:
#title:Personnes domiciliées dans la province de Namur
#title:Personnes domiciliées dans la province de Namur


SELECT ?personne ?personneLabel ?rgb ?domicile ?domicileLabel
SELECT ?personne ?personneLabel ?domicile ?domicileLabel ?rgb
WHERE {   
WHERE {   
   ?personne wbt:P7 ?domicile. # Trouver des personnes avec un domicile connu
   ?personne wbt:P7 ?domicile. # Trouver des personnes avec un domicile connu
Line 395: Line 395:
   # ?personne wbt:P4 wb:Q7.  # Pour filtrer uniquement les personnes de genre masculin (Q7)
   # ?personne wbt:P4 wb:Q7.  # Pour filtrer uniquement les personnes de genre masculin (Q7)


   BIND('158f68' as ?rgb)  # Définir une couleur d'affichage personnalisée pour les résultats (code couleur hexadécimal)
   BIND('158f68' as ?rgb)  # Définir une couleur d'affichage personnalisée pour les communes
    
    
   SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr,en". } # Obtenir les labels des entités en plusieurs langues
   SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr,en". } # Obtenir les labels des entités en plusieurs langues

Revision as of 07:52, 21 August 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

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

  • 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

Try it!


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

Try it!

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

Try it!


Mouvements

Utile/inspiration

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
  }
}

Try it!


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')

Try it!


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" } .
}

Try it!


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

Try it!


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

Try it!


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

Try it!

Articles Belgium WWII en français pour des personnes

https://tinyurl.com/293dtr5z

Dossiers ARA et nés en RDC

https://tinyurl.com/26zbmffy


Nouvelles requêtes (août 2024)

Organisations classées par nombre de membres

# Liste basée sur l'appartenance à des organisations de résistance ("membre de"-P52), triée par le nombre d'Agents de Renseignements et d'Action pour une organisation donnée

#defaultView:BubbleChart # vue par défaut sous forme de graphique à bulles

SELECT ?organisation ?organisationLabel (count(?organisation) as ?organisation_count) # Compter le nombre de membres pour chaque organisation
WHERE {  
  ?person wbt:P1 wb:Q2 . # Sélectionner des personnes (leur "nature"-P1 est d'être des "personnes"-Q2)
  ?person wbt:P52 ?organisation . # Sélectionner les organisations dont ces personnes sont "membre de"-P52
 
  # Optionnel : Filtrer les organisations de résistance pour ne garder que des organisaitons spécifiques de résistance 
  # FILTER EXISTS {?organisation wbt:P1 wb:Q6553 .}  # Exemple de filtre pour ne garder que les mouvements de résistance armée reconnue
  # FILTER NOT EXISTS {?organisation wbt:P1/wbt:P9* wb:Q37 .}  # Exemple de filtre pour exclure tous les mouvements de résistance armée (attention, cela exclura également le Groupe G et Nola qui sont à la fois des mouvements de résistance armée et des réseaux/missions)

  
 SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr,en". } 
}

GROUP BY ?organisation ?organisationLabel
ORDER BY DESC(?organisation_count)

Try it!

Nombre de personnes à qui est associé une fiche ou un dossier individuel du fonds AA1333

SELECT DISTINCT (count(*) as ?c) WHERE {
  ?person wbt:P34 wb:Q4159 . 
}

Try it!


Personnes à qui est associé un dossier individuel du fonds AA1333...

SELECT DISTINCT ?person ?personLabel WHERE {
  ?person wbt:P1 wb:Q2. # je recherche des personnes
  ?person wbt:P34 wb:Q4159 .  # à qui sont associées des "dossiers personnels" d'Agents de Renseignements et d'Action (fonds AA1333)

  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr". }


}

Try it!

Personnes habitant dans la Province de Namur pendant/au lendemain de la Seconde Guerre mondiale (graphe)

# Liste des personnes domiciliées dans la province de Namur
# associées à un dossier individuel du fonds AA1333 (Dossiers Services de Renseignements et d'Action SRA de la Sûreté de l'Etat (BE-A0547_2674_AA1333))
# Les résultats sont regroupés par commune de résidence.

#defaultView:Graph   # Voir les résultats sous forme de "graphe"
#title:Personnes domiciliées dans la province de Namur

SELECT ?personne ?personneLabel ?domicile ?domicileLabel ?rgb
WHERE {  
  ?personne wbt:P7 ?domicile. # Trouver des personnes avec un domicile connu
  ?domicile wbt:P14* wb:Q53.  # Filtrer pour ne conserver que les domiciles situés dans la province de Namur
  
  # Filtrage par genre des personnes
  # Décommentez la ligne correspondant au genre que vous souhaitez filtrer
  # ?personne wbt:P4 wb:Q6.  # Pour filtrer uniquement les personnes de genre féminin (Q6)
  # ?personne wbt:P4 wb:Q7.  # Pour filtrer uniquement les personnes de genre masculin (Q7)

  BIND('158f68' as ?rgb)  # Définir une couleur d'affichage personnalisée pour les communes
  
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr,en". } # Obtenir les labels des entités en plusieurs langues
}

LIMIT 400  # Limiter le nombre de résultats à 400 pour éviter de surcharger les résultats. Ajustez ce nombre selon vos besoins.

Try it!