Project:SPARQL/examples: Difference between revisions

From Resistance in Belgium
No edit summary
No edit summary
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Exemples de requêtes SPARQL ==


Cette page liste des exemples de requêtes SPARQL permettant d'interroger en profondeur les données de ''Resistance in Belgium'' [https://data.arch.be/wiki/Special:MyLanguage/In-depth_search voir aussi cette page d'exemples plus détaillée]. Chaque requête peut être lancée en cliquant sur le lien "Try it!" qui ouvre une interface de requête dédiée.
<translate>


== SPARQL Query Examples == <!--T:1-->


<!--T:2-->
This page lists examples of SPARQL queries that allow for in-depth interrogation of the ''Resistance in Belgium'' data ([https://data.arch.be/wiki/Special:MyLanguage/In-depth_search see also this example page]). Each query can be executed by clicking on the "Try it!" link, which opens a dedicated query interface.


==== Search for resistance fighters by family name ====
<!--T:3-->
'''Note''': For practical reasons, the queries have been automatically translated into English, Dutch, and German. While there may be minor inaccuracies, we prioritized making these examples available in multiple languages to ensure broad access to the data for all users.


==== Search for resistance members by family name ==== <!--T:4-->
<!--T:5-->
{{SPARQL|query=
{{SPARQL|query=


<!--T:6-->
# This query has been automatically translated for pragmatic reasons and due to limited resources. Please be aware that some terms may not be fully accurate.
# This query has been automatically translated for pragmatic reasons and due to limited resources. Please be aware that some terms may not be fully accurate.


<!--T:7-->
# This query retrieves the list of people present in the database with a certain last name.
# This query retrieves the list of people present in the database with a certain last name.


<!--T:8-->
#title: Resistance fighters with a certain last name (here: Barbieux)
#title: Resistance fighters with a certain last name (here: Barbieux)


<!--T:9-->
SELECT ?person ?personLabel ?birthDate
SELECT ?person ?personLabel ?birthDate
WHERE {
WHERE {
Line 24: Line 35:
}
}


<!--T:10-->
ORDER BY ?personLabel  # Sorts the results alphabetically by label
ORDER BY ?personLabel  # Sorts the results alphabetically by label
}}
}}




==== Recherche des membres d'une organisation de résistance ====
==== Search for members of a resistance organisation ==== <!--T:11-->




<!--T:12-->
{{SPARQL|query=
{{SPARQL|query=


# Cette requête récupère la liste des personnes présentes dans la base de données et dont on sait qu'elles appartenaient à une certaine organisation de résistance (ici : Tempo)
<!--T:13-->
# This query has been automatically translated for pragmatic reasons and due to limited resources. Please be aware that some terms may not be fully accurate.


#title: Résistant⸱e⸱s membres d'une organisation de résistance (ici : Tempo)
<!--T:14-->
# This query retrieves the list of people present in the database
# and known to be members of a certain resistance organisation (here: Tempo)


SELECT ?personne ?personneLabel ?dateNaissance
<!--T:15-->
#title: Resistance fighters who are members of a resistance organisation (here: Tempo)
 
<!--T:16-->
SELECT ?person ?surname ?firstName ?birthDate
WHERE {
WHERE {
   ?personne wdt:P1  wd:Q2 .                 # Sélectionne tous les éléments qui sont (P1) des personnes (Q2)
   ?person wdt:P1  wd:Q2 .                   # Selects all elements that are (P1) persons (Q2)
   ?personne wdt:P52 wd:Q4367 .                   # Filtre par appartenance à une organisation ("membre de", P52), ici "Tempo" (Q4367) (remplacez Q4367 par l'organisation de votre choix en utilisant l'auto-complétion (Control + espace))
   ?person wdt:P52 wd:Q4367 .                 # Filters by membership in an organisation ("member of", P52), here "Tempo" (Q4367) (replace Q4367 with the organisation of your choice using autocomplete (Control + space))
   ?personne wdt:P67 ?dateNaissance .       # Ajoute la date de naissance (P67)
   ?person wdt:P67 ?birthDate .             # Adds the birth date (P67)
         
  ?person  wdt:P3 ?surname .                # Retrieves the surname (P3)
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr". }  # Récupère le libellé en français
  ?person  wdt:P2 ?firstName .              # Retrieves the first name (P2)
         
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en,[AUTO_LANGUAGE]". }  # Retrieves the label in English
}
}
<!--T:17-->
ORDER BY LCASE(?surname) LCASE(?firstName)  # Sorts results by surname, then first name (case-insensitive)
}}
}}


==== Recherche par domicile ====
==== Search by place of residence ==== <!--T:18-->


<!--T:19-->
{{SPARQL|query=
{{SPARQL|query=


# Cette requête récupère la liste des personnes présentes dans la base de données et domiciliées dans une certaine commune pendant/au lendemain de la Seconde Guerre mondiale
<!--T:20-->
# This query has been automatically translated for pragmatic reasons and due to limited resources. Please be aware that some terms may not be fully accurate.


#title: Résistant⸱e⸱s filtrés selon leur domicile (ici : Anderlecht)
<!--T:21-->
# This query retrieves the list of people present in the database
# and residing in a certain municipality during/after World War II


SELECT ?personne ?personneLabel ?dateNaissance
<!--T:22-->
#title: Resistance fighters filtered by their residence (here: Anderlecht)
 
<!--T:23-->
SELECT ?person ?surname ?firstName ?birthDate
WHERE {
WHERE {
   ?personne wdt:P1  wd:Q2 .                 # Sélectionne tous les éléments qui sont (P1) des personnes (Q2)
   ?person wdt:P1  wd:Q2 .                   # Selects all elements that are (P1) persons (Q2)
   ?personne wdt:P7  wd:Q102 .                   # Filtre par domicile (P7), ici Anderlecht (Q102) (remplacez Q102 par la (section de) commune de votre choix en utilisant l'auto-complétion (Control + espace))
   ?person wdt:P7  wd:Q102 .                 # Filters by residence (P7), here Anderlecht (Q102) (replace Q102 with the (section of) municipality of your choice using autocomplete (Control + space))
   ?personne wdt:P67 ?dateNaissance .       # Ajoute la date de naissance (P67)
   ?person wdt:P67 ?birthDate .             # Adds the birth date (P67)
         
  ?person  wdt:P3 ?surname .                # Retrieves the surname (P3)
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr". }  # Récupère le libellé en français
  ?person  wdt:P2 ?firstName .              # Retrieves the first name (P2)
       
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en,[AUTO_LANGUAGE]". }  # Retrieves the label in English
}
}
<!--T:24-->
ORDER BY LCASE(?surname) LCASE(?firstName)  # Sorts results by surname, then first name (case-insensitive)
<!--T:25-->
}}
}}


==== Recherche par profession ====
==== Search by profession ==== <!--T:26-->


<!--T:27-->
{{SPARQL|query=
{{SPARQL|query=


# Cette requête récupère la liste des personnes présentes dans la base de données ayant une certaine profession (ici : coiffeur / kapper).
<!--T:28-->
# This query has been automatically translated for pragmatic reasons and due to limited resources. Please be aware that some terms may not be fully accurate.


#title: Résistant⸱e⸱s ayant une certaine profession (ici : coiffeur / kapper)
<!--T:29-->
# This query retrieves the list of people present in the database who have a certain profession (here: hairdresser / kapper).


SELECT ?personne ?personneLabel ?domicileLabel ?professionLabel
<!--T:30-->
#title: Resistance fighters with a certain profession (here: hairdresser / kapper)
 
<!--T:31-->
SELECT ?person ?surname ?firstName ?residenceLabel ?professionLabel
WHERE {
WHERE {
   ?personne wdt:P1  wd:Q2 .              # Sélectionne toutes les personnes (P1) avec l'identifiant "Personne" (Q2)
   ?person wdt:P1  wd:Q2 .              # Selects all people (P1) with the identifier "Person" (Q2)
   ?personne wdt:P13 ?profession .         # Sélectionne leur profession (P13)
   ?person  wdt:P13 ?profession .         # Selects their profession (P13)
  ?person  wdt:P3 ?surname .            # Retrieves the surname (P3)
  ?person  wdt:P2 ?firstName .          # Retrieves the first name (P2)
    
    
   FILTER (CONTAINS(str(?profession), 'coiffeu') || CONTAINS(str(?profession), 'kapper')).  # Filtre pour sélectionner toutes les personnes dont la profession contient 'coiffeu' (coiffeur-coiffeuse en français) ou 'kapper' (en néerlandais)  
   FILTER (CONTAINS(str(?profession), 'coiffeu') || CONTAINS(str(?profession), 'kapper')).  # Filters to select all people whose profession
                                                                                          # contains 'coiffeu' (hairdresser in French) or 'kapper' (in Dutch)


   OPTIONAL { ?personne wdt:P7 ?domicile. } # Ajoute également le domicile (P7), s'il est connu
<!--T:32-->
#FILTER (CONTAINS(str(?profession), 'coiffeu')). # If you want to use only one search term: remove the '#' at the start of the line and delete the previous line
 
   OPTIONAL { ?person wdt:P7 ?residence. } # Also adds the residence (P7), if known
            
            
   SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr". }  # Récupère les libellés en français
   SERVICE wikibase:label { bd:serviceParam wikibase:language "en,[AUTO_LANGUAGE]". }  # Retrieves the labels in English
}
}
<!--T:33-->
ORDER BY LCASE(?surname) LCASE(?firstName)  # Sorts the results by surname, then first name (case-insensitive)
}}
}}




==== Nombre de membres des organisations de résistance ====
==== Number of members of a resistance organisation ==== <!--T:34-->


<!--T:35-->
{{SPARQL|query=
{{SPARQL|query=
# This query has been automatically translated for pragmatic reasons and due to limited resources. Please be aware that some terms may not be fully accurate.


<!--T:36-->
# This query retrieves the number of members per resistance organisation and displays the results as a bubble chart.
# You can click on each bubble or organisation name to access more details about the organisation in the database.


# Cette requête récupère le nombre de membres par organisation de résistance et affiche les résultats sous forme de graphique à bulles
<!--T:37-->
# Vous pouvez cliquer sur chaque bulle ou nom d'organisation pour accéder à plus de détails sur l'organisation dans la base de données.
#title: Count of members per resistance organisation
 
#title: Décompte des membres par organisation de résistance


#defaultView:BubbleChart  # Affichage sous forme de bulles
<!--T:38-->
#defaultView:BubbleChart  # Display as bubbles


SELECT ?organisation ?organisationLabel (COUNT(?personne) AS ?nombreMembres)
<!--T:39-->
SELECT ?organisation ?organisationLabel (COUNT(?person) AS ?numberOfMembers)
WHERE {
WHERE {
   ?personne wdt:P1 wd:Q2 .              # Sélectionne tous les éléments qui sont (P1) des personnes (Q2)
   ?person wdt:P1 wd:Q2 .              # Selects all elements that are (P1) persons (Q2)
   ?personne wdt:P52 ?organisation .    # Filtre par appartenance à une organisation ("membre de", P52)
   ?person wdt:P52 ?organisation .    # Filters by membership in an organisation ("member of", P52)


   FILTER EXISTS {  
   <!--T:40-->
   ?organisation wdt:P1/wdt:P9* wd:Q4  # Vérifie si l'organisation est (P1)/est une sous-classe (P9) d'une organisation de résistance (Q4)
FILTER EXISTS {  
   ?organisation wdt:P1/wdt:P9* wd:Q4  # Checks if the organisation is (P1) / is a subclass (P9) of a resistance organisation (Q4)
   }
   }
   # Pour filtrer et afficher uniquement les réseaux/missions de résistance, remplacez Q4 par Q38.
   # To filter and display only resistance networks/missions, replace Q4 with Q38.
   # Pour filtrer et afficher uniquement les mouvements de résistance armée, remplacez Q4 par Q37.
   # To filter and display only armed resistance movements, replace Q4 with Q37.


    
    
   SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr". }  # Récupère les libellés en français
   <!--T:41-->
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }  # Retrieves the labels in English
}
}
GROUP BY ?organisation ?organisationLabel
GROUP BY ?organisation ?organisationLabel
ORDER BY DESC(?nombreMembres)
ORDER BY DESC(?numberOfMembers)
}}
 
====  Places of death during the war ==== <!--T:42-->
 
<!--T:43-->
{{SPARQL|query=
 
<!--T:44-->
# This query has been automatically translated for pragmatic reasons and due to limited resources. Please be aware that some terms may not be fully accurate.


<!--T:45-->
# This query retrieves the places of death of resistance fighters up until the end of 1945
# and displays them on a map with their names and, if available, the dates of death.
<!--T:46-->
# Tip: You can click on the points on the map to view the names of the deceased individuals.
# Note: Foreign locations have been "modernised" to match the current data in the Geonames database.
<!--T:47-->
#title: Places and dates of death during the war
<!--T:48-->
#defaultView:Map{"hide":"?GPS"}  # Display as a map, hide the GPS coordinates
<!--T:49-->
SELECT ?person ?personLabel ?placeOfDeath ?placeOfDeathLabel ?GPS ?dateOfDeath
WHERE {
  ?person wdt:P1 wd:Q2 .                      # Selects all people (P1 = Q2)
  ?person wdt:P48 ?placeOfDeath .            # Retrieves the places of death (P48)
  ?placeOfDeath wdt:P6 ?GPS .                # Retrieves the GPS coordinates of the places of death (P6)
  OPTIONAL { ?person wdt:P68 ?dateOfDeath .  # Retrieves the date of death, if available
            FILTER(?dateOfDeath <= "1945-12-31"^^xsd:dateTime)  # Filters deaths: up until the end of 1945
  }
 
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en,[AUTO_LANGUAGE]". }  # Retrieves the labels in English
}
<!--T:50-->
ORDER BY ?placeOfDeathLabel
}}
}}


==== Lieux de décès pendant la guerre ====


====  List the women who have been detained ==== <!--T:51-->
<!--T:52-->
{{SPARQL|query=
{{SPARQL|query=
# This query has been automatically translated for pragmatic reasons and due to limited resources. Please be aware that some terms may not be fully accurate.


# Cette requête récupère les lieux de décès des résistant⸱e⸱s jusqu'à la fin de l'année 1945 et les affiche sur une carte avec leur nom et, si disponible, les dates de décès
<!--T:53-->
# Vous pouvez cliquer sur les points sur la carte pour afficher les noms des personnes décédées.
#title: Women resistance fighters who were detained
# Note : les lieux à l'étranger ont été "modernisés" pour correspondre aux données actuelles de la base Geonames.
SELECT DISTINCT ?person ?surname ?firstName ?startOfDetention ?endOfDetention ?professionLabel ?recognitionStatusLabel
WHERE {


#title: Lieux et dates de décès pendant la guerre
  <!--T:54-->
?person wdt:P1 wd:Q2 .                  # Selects persons (P1 = Q2)
  ?person wdt:P4 wd:Q6 .                  # Filters to select women (P4 = female Q6)
 
  ?person p:P53 ?detention_statement .    # Searches for persons who were detained (P53)
  ?detention_statement ps:P53 ?detention .
         
  OPTIONAL { ?detention_statement pq:P23 ?startOfDetention. FILTER (datatype(?startOfDetention) = xsd:edtf ) } # Retrieves the start of detention date if available (P23)
  OPTIONAL { ?detention_statement pq:P25 ?endOfDetention. FILTER (datatype(?endOfDetention) = xsd:edtf ) }    # Retrieves the end of detention date if available (P25)
 
  <!--T:55-->
OPTIONAL { ?person wdt:P13 ?profession. }          # Retrieves the profession if available (P13)
  OPTIONAL { ?person wdt:P55 ?recognitionStatus. }    # Retrieves the national recognition status if obtained (P55)
 
  <!--T:56-->
?person  wdt:P3 ?surname .            # Retrieves the surname (P3)
  ?person  wdt:P2 ?firstName .          # Retrieves the first name (P2)
 
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }  # Retrieves the labels in English
 
<!--T:57-->
}


#defaultView:Map{"hide":"?GPS"} # Affichage sous forme de carte
<!--T:58-->
ORDER BY LCASE(?surname) LCASE(?firstName) # Sorts case-insensitively
}}


SELECT ?personne ?personneLabel ?lieuDecesLabel ?GPS ?dateDeces
 
====  Recognised ARA/FFC Members or Letter of Appreciation Recipients ==== <!--T:59-->
 
<!--T:60-->
{{SPARQL|query=
# This query has been automatically translated for pragmatic reasons and due to limited resources. Please be aware that some terms may not be fully accurate.
 
<!--T:61-->
# This query retrieves the list of resistance fighters recognised as intelligence and action agents (ARA)
# or who received a letter of thanks (LR) or FFC (Forces Françaises Combattantes) status, along with their residence and linked archive file.
 
<!--T:62-->
#title: ARA resistance fighters (recognised or letter of thanks) or FFC
 
<!--T:63-->
SELECT DISTINCT ?person ?surname ?firstName ?residence ?residenceLabel ?recognisedStatusLabel ?LR ?archiveCollectionLabel ?inventoryNo WHERE {
 
  <!--T:64-->
?person wdt:P1 wd:Q2 .                    # Selects persons (P1 = Q2)
  ?person  wdt:P3 ?surname .                # Retrieves the surname (P3)
  ?person  wdt:P2 ?firstName .              # Retrieves the first name (P2)
 
  <!--T:65-->
{ ?person wdt:P55 ?recognisedStatus.
    FILTER(?recognisedStatus IN (wd:Q17, wd:Q4487)) }  # Filters for recognised ARA statuses (Q17) or FFC (Q4487)
  UNION                                            # OR
  { ?person p:P54 ?statement.
    ?statement ps:P54 wd:Q17; pq:P56 wd:Q6665.    # Persons who received a letter of thanks (Q6665)
    BIND("letter of thanks ARA" AS ?LR)}
 
  <!--T:66-->
OPTIONAL { ?person wdt:P7 ?residence. }        # Retrieves the residence if available (P7)
  OPTIONAL { ?person p:P34 ?archive_statement .
            ?archive_statement ps:P34 ?archiveCollection ;
                                pq:P35 ?inventoryNo.}  # Reference to the archives
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en,[AUTO_LANGUAGE]". }  # Retrieves the labels in English
}
 
<!--T:67-->
ORDER BY LCASE(?surname) LCASE(?firstName)  # Sorts results by surname, then first name (case-insensitive)
LIMIT 100  # Limits the results to 100 to optimise performance. You can adjust or remove this limit as needed.
}}
 
 
====  Enriching data on resistance members using external sources [federated query] ==== <!--T:68-->
 
<!--T:69-->
{{SPARQL|query=
## This query has been automatically translated for pragmatic reasons and due to limited resources. Please be aware that some terms may not be fully accurate.
 
<!--T:70-->
# This query retrieves additional information about the resistance fighters in the database, thanks to Wikidata, including Wikipedia articles and external archives (ODIS, Biographie Nationale, VIAF, SNAC, etc.).
 
<!--T:71-->
#title: Enrichment of resistance fighter data via Wikidata
 
<!--T:72-->
PREFIX wd_wikidata: <http://www.wikidata.org/entity/>  # Prefix for Wikidata
PREFIX wdt_wikidata: <http://www.wikidata.org/prop/direct/>  # Prefix for Wikidata direct properties
 
<!--T:73-->
SELECT DISTINCT ?person ?surname ?firstName ?wikidata_ID ?article_en ?odisURL ?bioNationaleURL ?JusteURL ?maitronURL ?viafURL ?snacURL
(GROUP_CONCAT(DISTINCT ?archivesLabel; SEPARATOR = ", ") AS ?archives)  # Concatenation of found archives
 
<!--T:74-->
WHERE {
WHERE {
   ?personne wdt:P1 wd:Q2 .                     # Sélectionne toutes les personnes (P1 = Q2)
   ?person wdt:P1 wd:Q2 .                 # Selects all persons (P1 = Q2)
   ?personne wdt:P48 ?lieuDeces .               # Récupère les lieux de décès (P48)
   ?person  wdt:P3 ?surname .             # Retrieves the surname (P3)
   ?lieuDeces wdt:P6 ?GPS .                     # Récupère les coordonnées GPS des lieux de décès (P6)
   ?person  wdt:P2 ?firstName .           # Retrieves the first name (P2)
   OPTIONAL { ?personne wdt:P68 ?dateDeces .    # Récupère la date de décès, si disponible
 
            FILTER(?dateDeces <= "1945-12-31"^^xsd:dateTime)  # Filtre les décès jusqu'à fin 1945
   <!--T:75-->
?person wdt:P15 ?wikidataIdentifier .  # Retrieves the Wikidata identifier (P15)
 
  <!--T:76-->
# Generates a link to the corresponding Wikidata entity
  BIND(URI(CONCAT("http://www.wikidata.org/entity/", ?wikidataIdentifier)) AS ?wikidata_ID)
 
  <!--T:77-->
# Federated query to retrieve additional information from Wikidata
  SERVICE <https://query.wikidata.org/sparql> {
   
    # Retrieves and generates the URLs of external identifiers
    OPTIONAL {  
      ?wikidata_ID wdt_wikidata:P2372 ?odisID. # Retrieves the ODIS ID
      BIND(URI(CONCAT("https://www.odis.be/lnk/", STR(?odisID))) AS ?odisURL)  # Generates the ODIS URL
    }
     OPTIONAL {
      ?wikidata_ID wdt_wikidata:P6234 ?bioNationaleID.  # Biographie Nationale of Belgium ID
      BIND(URI(CONCAT("https://academieroyale.be/fr/la-biographie-nationale-personnalites-detail/personnalites/", STR(?bioNationaleID), "/Vrai/")) AS ?bioNationaleURL)  # Generates the Biographie Nationale URL
    }
    OPTIONAL {
      ?wikidata_ID wdt_wikidata:P214 ?viafID.  # VIAF ID
      BIND(URI(CONCAT("https://viaf.org/viaf/", STR(?viafID))) AS ?viafURL)  # Generates the VIAF URL
    }
    OPTIONAL {
      ?wikidata_ID wdt_wikidata:P3430 ?snacID.  # SNAC ID
      BIND(URI(CONCAT("https://snaccooperative.org/ark:/99166/", STR(?snacID))) AS ?snacURL)  # Generates the SNAC URL
    }
    OPTIONAL {
      ?wikidata_ID wdt_wikidata:P4724 ?maitronID.  # Maitron ID
      BIND(URI(CONCAT("https://maitron.fr/spip.php?article", STR(?maitronID))) AS ?maitronURL)  # Generates the Maitron URL
    }
    OPTIONAL {
      ?wikidata_ID wdt_wikidata:P1979 ?JusteID.  # Righteous Among the Nations ID
      BIND(URI(CONCAT("https://collections.yadvashem.org/en/righteous/", STR(?JusteID))) AS ?JusteURL)  # Generates the Righteous Among the Nations URL
    }
   
    # Retrieves the English Wikipedia article
    OPTIONAL {
      ?article_en schema:about ?wikidata_ID ;
                  schema:inLanguage "en" ;
                  schema:isPartOf <https://en.wikipedia.org/> .  # English Wikipedia article
    }
   
    # Retrieves archives linked to the person
    OPTIONAL {
      ?wikidata_ID wdt_wikidata:P485 ?archives.  # Retrieves archives (P485)
      ?archives rdfs:label ?archivesLabel.  # Retrieves archive labels
      FILTER(LANG(?archivesLabel) = "en")  # Filters for labels in English
    }
   }
   }
    
 
   SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr". } # Récupère les libellés en français
   <!--T:78-->
# Retrieves labels of persons in the defined language
   SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
}
<!--T:79-->
GROUP BY ?person ?surname ?firstName ?wikidata_ID ?article_en ?odisURL ?JusteURL ?bioNationaleURL ?maitronURL ?viafURL ?snacURL
<!--T:80-->
ORDER BY LCASE(?surname) LCASE(?firstName)  # Sorts results by surname, then first name (case-insensitive)
}}
}}
</translate>

Latest revision as of 12:49, 16 October 2024


SPARQL Query Examples

This page lists examples of SPARQL queries that allow for in-depth interrogation of the Resistance in Belgium data (see also this example page). Each query can be executed by clicking on the "Try it!" link, which opens a dedicated query interface.

Note: For practical reasons, the queries have been automatically translated into English, Dutch, and German. While there may be minor inaccuracies, we prioritized making these examples available in multiple languages to ensure broad access to the data for all users.


Search for resistance members by family name

# This query has been automatically translated for pragmatic reasons and due to limited resources. Please be aware that some terms may not be fully accurate.

# This query retrieves the list of people present in the database with a certain last name.

#title: Resistance fighters with a certain last name (here: Barbieux)

SELECT ?person ?personLabel ?birthDate
WHERE {
  ?person  wdt:P1  wd:Q2 .                    # Selects all elements thaat are (P1) persons (Q2)
  ?person  wdt:P3  "Barbieux" .               # Filters to take only persons whose last name (P3) is "Barbieux" (modify "Barbieux" as needed)
  ?person  wdt:P67 ?birthDate  .              # Adds the birth date (P67)
           
 SERVICE wikibase:label { bd:serviceParam wikibase:language "en,[AUTO_LANGUAGE]". }  # Retrieves the label in English
}

ORDER BY ?personLabel  # Sorts the results alphabetically by label

Try it!


Search for members of a resistance organisation

# This query has been automatically translated for pragmatic reasons and due to limited resources. Please be aware that some terms may not be fully accurate.

# This query retrieves the list of people present in the database 
# and known to be members of a certain resistance organisation (here: Tempo)

#title: Resistance fighters who are members of a resistance organisation (here: Tempo)

SELECT  ?person ?surname ?firstName ?birthDate
WHERE {
  ?person  wdt:P1  wd:Q2 .                   # Selects all elements that are (P1) persons (Q2)
  ?person wdt:P52 wd:Q4367 .                 # Filters by membership in an organisation ("member of", P52), here "Tempo" (Q4367) (replace Q4367 with the organisation of your choice using autocomplete (Control + space))
  ?person  wdt:P67 ?birthDate  .             # Adds the birth date (P67)
  ?person  wdt:P3 ?surname .                 # Retrieves the surname (P3)
  ?person  wdt:P2 ?firstName .               # Retrieves the first name (P2)
          
 SERVICE wikibase:label { bd:serviceParam wikibase:language "en,[AUTO_LANGUAGE]". }  # Retrieves the label in English
}

ORDER BY LCASE(?surname) LCASE(?firstName)  # Sorts results by surname, then first name (case-insensitive)

Try it!

Search by place of residence

# This query has been automatically translated for pragmatic reasons and due to limited resources. Please be aware that some terms may not be fully accurate.

# This query retrieves the list of people present in the database 
# and residing in a certain municipality during/after World War II

#title: Resistance fighters filtered by their residence (here: Anderlecht)

SELECT ?person ?surname ?firstName ?birthDate
WHERE {
  ?person  wdt:P1  wd:Q2 .                   # Selects all elements that are (P1) persons (Q2)
  ?person  wdt:P7  wd:Q102 .                 # Filters by residence (P7), here Anderlecht (Q102) (replace Q102 with the (section of) municipality of your choice using autocomplete (Control + space))
  ?person  wdt:P67 ?birthDate  .             # Adds the birth date (P67)
  ?person  wdt:P3 ?surname .                 # Retrieves the surname (P3)
  ?person  wdt:P2 ?firstName .               # Retrieves the first name (P2)
         
 SERVICE wikibase:label { bd:serviceParam wikibase:language "en,[AUTO_LANGUAGE]". }  # Retrieves the label in English
}

ORDER BY LCASE(?surname) LCASE(?firstName)  # Sorts results by surname, then first name (case-insensitive)

Try it!

Search by profession

# This query has been automatically translated for pragmatic reasons and due to limited resources. Please be aware that some terms may not be fully accurate.

# This query retrieves the list of people present in the database who have a certain profession (here: hairdresser / kapper).

#title: Resistance fighters with a certain profession (here: hairdresser / kapper)

SELECT ?person ?surname ?firstName ?residenceLabel ?professionLabel
WHERE {
  ?person  wdt:P1  wd:Q2 .               # Selects all people (P1) with the identifier "Person" (Q2)
  ?person  wdt:P13 ?profession .         # Selects their profession (P13)
  ?person  wdt:P3 ?surname .             # Retrieves the surname (P3)
  ?person  wdt:P2 ?firstName .           # Retrieves the first name (P2)
  
  FILTER (CONTAINS(str(?profession), 'coiffeu')

Try it!


Number of members of a resistance organisation

# This query has been automatically translated for pragmatic reasons and due to limited resources. Please be aware that some terms may not be fully accurate.

# This query retrieves the number of members per resistance organisation and displays the results as a bubble chart.
# You can click on each bubble or organisation name to access more details about the organisation in the database.

#title: Count of members per resistance organisation

#defaultView:BubbleChart  # Display as bubbles

SELECT ?organisation ?organisationLabel (COUNT(?person) AS ?numberOfMembers)
WHERE {
  ?person wdt:P1 wd:Q2 .              # Selects all elements that are (P1) persons (Q2)
  ?person wdt:P52 ?organisation .     # Filters by membership in an organisation ("member of", P52)

  FILTER EXISTS { 
   ?organisation wdt:P1/wdt:P9* wd:Q4  # Checks if the organisation is (P1) / is a subclass (P9) of a resistance organisation (Q4)
   }
   # To filter and display only resistance networks/missions, replace Q4 with Q38.
   # To filter and display only armed resistance movements, replace Q4 with Q37.

  
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }  # Retrieves the labels in English
}
GROUP BY ?organisation ?organisationLabel
ORDER BY DESC(?numberOfMembers)

Try it!

Places of death during the war

# This query has been automatically translated for pragmatic reasons and due to limited resources. Please be aware that some terms may not be fully accurate.

# This query retrieves the places of death of resistance fighters up until the end of 1945 
# and displays them on a map with their names and, if available, the dates of death.

# Tip: You can click on the points on the map to view the names of the deceased individuals.
# Note: Foreign locations have been "modernised" to match the current data in the Geonames database.

#title: Places and dates of death during the war

#defaultView:Map{"hide":"?GPS"}  # Display as a map, hide the GPS coordinates

SELECT ?person ?personLabel ?placeOfDeath ?placeOfDeathLabel ?GPS ?dateOfDeath
WHERE {
  ?person wdt:P1 wd:Q2 .                      # Selects all people (P1 = Q2)
  ?person wdt:P48 ?placeOfDeath .             # Retrieves the places of death (P48)
  ?placeOfDeath wdt:P6 ?GPS .                 # Retrieves the GPS coordinates of the places of death (P6)
  OPTIONAL { ?person wdt:P68 ?dateOfDeath .   # Retrieves the date of death, if available
             FILTER(?dateOfDeath <= "1945-12-31"^^xsd:dateTime)  # Filters deaths: up until the end of 1945
  }
  
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en,[AUTO_LANGUAGE]". }  # Retrieves the labels in English
}

ORDER BY ?placeOfDeathLabel

Try it!


List the women who have been detained

# This query has been automatically translated for pragmatic reasons and due to limited resources. Please be aware that some terms may not be fully accurate.

#title: Women resistance fighters who were detained
SELECT DISTINCT ?person ?surname ?firstName ?startOfDetention ?endOfDetention ?professionLabel ?recognitionStatusLabel
WHERE {

  ?person wdt:P1 wd:Q2 .                   # Selects persons (P1 = Q2)
  ?person wdt:P4 wd:Q6 .                   # Filters to select women (P4 = female Q6)
  
  ?person p:P53 ?detention_statement .     # Searches for persons who were detained (P53)
  ?detention_statement ps:P53 ?detention .
           
  OPTIONAL { ?detention_statement pq:P23 ?startOfDetention. FILTER (datatype(?startOfDetention) = xsd:edtf ) } # Retrieves the start of detention date if available (P23)
  OPTIONAL { ?detention_statement pq:P25 ?endOfDetention. FILTER (datatype(?endOfDetention) = xsd:edtf ) }     # Retrieves the end of detention date if available (P25)

  OPTIONAL { ?person wdt:P13 ?profession. }           # Retrieves the profession if available (P13)
  OPTIONAL { ?person wdt:P55 ?recognitionStatus. }    # Retrieves the national recognition status if obtained (P55)

  ?person  wdt:P3 ?surname .             # Retrieves the surname (P3)
  ?person  wdt:P2 ?firstName .           # Retrieves the first name (P2)
  
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }  # Retrieves the labels in English

}

ORDER BY LCASE(?surname) LCASE(?firstName)  # Sorts case-insensitively

Try it!


Recognised ARA/FFC Members or Letter of Appreciation Recipients

# This query has been automatically translated for pragmatic reasons and due to limited resources. Please be aware that some terms may not be fully accurate.

# This query retrieves the list of resistance fighters recognised as intelligence and action agents (ARA)
# or who received a letter of thanks (LR) or FFC (Forces Françaises Combattantes) status, along with their residence and linked archive file.

#title: ARA resistance fighters (recognised or letter of thanks) or FFC

SELECT DISTINCT ?person ?surname ?firstName ?residence ?residenceLabel ?recognisedStatusLabel ?LR ?archiveCollectionLabel ?inventoryNo WHERE {

  ?person wdt:P1 wd:Q2 .                    # Selects persons (P1 = Q2)
  ?person  wdt:P3 ?surname .                # Retrieves the surname (P3)
  ?person  wdt:P2 ?firstName .              # Retrieves the first name (P2)

  { ?person wdt:P55 ?recognisedStatus. 
    FILTER(?recognisedStatus IN (wd:Q17, wd:Q4487)) }  # Filters for recognised ARA statuses (Q17) or FFC (Q4487)
  UNION                                            # OR
  { ?person p:P54 ?statement.
    ?statement ps:P54 wd:Q17; pq:P56 wd:Q6665.     # Persons who received a letter of thanks (Q6665)
    BIND("letter of thanks ARA" AS ?LR)}

  OPTIONAL { ?person wdt:P7 ?residence. }         # Retrieves the residence if available (P7)
  OPTIONAL { ?person p:P34 ?archive_statement . 
             ?archive_statement ps:P34 ?archiveCollection ;
                                pq:P35 ?inventoryNo.}  # Reference to the archives
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en,[AUTO_LANGUAGE]". }  # Retrieves the labels in English
}

ORDER BY LCASE(?surname) LCASE(?firstName)  # Sorts results by surname, then first name (case-insensitive)
LIMIT 100  # Limits the results to 100 to optimise performance. You can adjust or remove this limit as needed.

Try it!


Enriching data on resistance members using external sources [federated query]

## This query has been automatically translated for pragmatic reasons and due to limited resources. Please be aware that some terms may not be fully accurate.

# This query retrieves additional information about the resistance fighters in the database, thanks to Wikidata, including Wikipedia articles and external archives (ODIS, Biographie Nationale, VIAF, SNAC, etc.).

#title: Enrichment of resistance fighter data via Wikidata

PREFIX wd_wikidata: <http://www.wikidata.org/entity/>  # Prefix for Wikidata
PREFIX wdt_wikidata: <http://www.wikidata.org/prop/direct/>  # Prefix for Wikidata direct properties

SELECT DISTINCT ?person ?surname ?firstName ?wikidata_ID ?article_en ?odisURL ?bioNationaleURL ?JusteURL ?maitronURL ?viafURL ?snacURL 
(GROUP_CONCAT(DISTINCT ?archivesLabel; SEPARATOR = ", ") AS ?archives)  # Concatenation of found archives

WHERE {
  ?person wdt:P1 wd:Q2 .                  # Selects all persons (P1 = Q2)
  ?person  wdt:P3 ?surname .              # Retrieves the surname (P3)
  ?person  wdt:P2 ?firstName .            # Retrieves the first name (P2)

  ?person wdt:P15 ?wikidataIdentifier .   # Retrieves the Wikidata identifier (P15)

  # Generates a link to the corresponding Wikidata entity
  BIND(URI(CONCAT("http://www.wikidata.org/entity/", ?wikidataIdentifier)) AS ?wikidata_ID)

  # Federated query to retrieve additional information from Wikidata
  SERVICE <https://query.wikidata.org/sparql> {
    
    # Retrieves and generates the URLs of external identifiers
    OPTIONAL { 
      ?wikidata_ID wdt_wikidata:P2372 ?odisID.  # Retrieves the ODIS ID
      BIND(URI(CONCAT("https://www.odis.be/lnk/", STR(?odisID))) AS ?odisURL)  # Generates the ODIS URL
    }
    OPTIONAL { 
      ?wikidata_ID wdt_wikidata:P6234 ?bioNationaleID.  # Biographie Nationale of Belgium ID
      BIND(URI(CONCAT("https://academieroyale.be/fr/la-biographie-nationale-personnalites-detail/personnalites/", STR(?bioNationaleID), "/Vrai/")) AS ?bioNationaleURL)  # Generates the Biographie Nationale URL
    }
    OPTIONAL { 
      ?wikidata_ID wdt_wikidata:P214 ?viafID.  # VIAF ID
      BIND(URI(CONCAT("https://viaf.org/viaf/", STR(?viafID))) AS ?viafURL)  # Generates the VIAF URL
    }
    OPTIONAL { 
      ?wikidata_ID wdt_wikidata:P3430 ?snacID.  # SNAC ID
      BIND(URI(CONCAT("https://snaccooperative.org/ark:/99166/", STR(?snacID))) AS ?snacURL)  # Generates the SNAC URL
    }
    OPTIONAL { 
      ?wikidata_ID wdt_wikidata:P4724 ?maitronID.  # Maitron ID
      BIND(URI(CONCAT("https://maitron.fr/spip.php?article", STR(?maitronID))) AS ?maitronURL)  # Generates the Maitron URL
    }
    OPTIONAL { 
      ?wikidata_ID wdt_wikidata:P1979 ?JusteID.  # Righteous Among the Nations ID
      BIND(URI(CONCAT("https://collections.yadvashem.org/en/righteous/", STR(?JusteID))) AS ?JusteURL)  # Generates the Righteous Among the Nations URL
    }
    
    # Retrieves the English Wikipedia article
    OPTIONAL {
      ?article_en schema:about ?wikidata_ID ;
                  schema:inLanguage "en" ;
                  schema:isPartOf <https://en.wikipedia.org/> .  # English Wikipedia article
    }
    
    # Retrieves archives linked to the person
    OPTIONAL {
      ?wikidata_ID wdt_wikidata:P485 ?archives.  # Retrieves archives (P485)
      ?archives rdfs:label ?archivesLabel.  # Retrieves archive labels
      FILTER(LANG(?archivesLabel) = "en")  # Filters for labels in English
    }
  }

  # Retrieves labels of persons in the defined language
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}

GROUP BY ?person ?surname ?firstName ?wikidata_ID ?article_en ?odisURL ?JusteURL ?bioNationaleURL ?maitronURL ?viafURL ?snacURL

ORDER BY LCASE(?surname) LCASE(?firstName)  # Sorts results by surname, then first name (case-insensitive)

Try it!