User:Adminagr/SPARQL: Difference between revisions

From Resistance in Belgium
Line 124: Line 124:


GROUP BY ?personne ?personneLabel ?appartenanceLabels
GROUP BY ?personne ?personneLabel ?appartenanceLabels
}}
{{SPARQL|query=
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 leur date de fondation.
SELECT ?item ?itemLabel ?organisationLabel ?date
(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 de résistante pour plus de lisibilité
(GROUP_CONCAT(DISTINCT ?responsableLabel; SEPARATOR = " ; ") AS ?responsableLabels)  # je regroupe les noms de responsables pour plus de lisibilité
(GROUP_CONCAT(DISTINCT ?allégeanceLabel; SEPARATOR = " ; ") AS ?allégeanceLabels)  # je regroupe les allégeances 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: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
   
  OPTIONAL {?item wbt:P40 ?allégeance.  # j'aimerais également afficher le noms des responsables 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
 
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr". } 
}
GROUP BY ?item ?itemLabel ?organisationLabel ?date ?paysLabels ?lieuxLabels ?typeLabels ?responsableLabels ?allégeanceLabels
}}
}}

Revision as of 15:44, 18 September 2023


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

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 leur date de fondation.

SELECT ?item ?itemLabel ?organisationLabel ?date
(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 de résistante pour plus de lisibilité
(GROUP_CONCAT(DISTINCT ?responsableLabel; SEPARATOR = " ; ") AS ?responsableLabels)  # je regroupe les noms de responsables pour plus de lisibilité
(GROUP_CONCAT(DISTINCT ?allégeanceLabel; SEPARATOR = " ; ") AS ?allégeanceLabels)  # je regroupe les allégeances 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: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
    
  OPTIONAL {?item wbt:P40 ?allégeance.  # j'aimerais également afficher le noms des responsables 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

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

GROUP BY ?item ?itemLabel ?organisationLabel ?date ?paysLabels ?lieuxLabels ?typeLabels ?responsableLabels ?allégeanceLabels

Try it!