Tutorial/nl: Difference between revisions

From Resistance in Belgium
(Created page with "<syntaxhighlight lang="sparql"> bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr,en". </syntaxhighlight>")
No edit summary
 
(61 intermediate revisions by the same user not shown)
Line 1: Line 1:


<div style="border:2px ;padding:9px; background-color:#158f68;">
<div style="border:2px ;padding:9px; background-color:#158f68;">
<span style="color:#FFFFFF;"><big>1/ Inleiding tot SPARQL</big></span> </div>
<span style="color:#FFFFFF;"><big>1. Inleiding tot SPARQL</big></span> </div>


<b>SPARQL</b> gebruiken is alsof je een onderzoeker bent in een gigantisch archief. In plaats van elk document één voor één door te nemen, beschik je over een taal waarmee je met één gerichte zoekopdracht onmiddellijk de informatie kunt vinden die aan je criteria voldoet.
<b>SPARQL</b> gebruiken is alsof je een onderzoeker bent in een gigantisch archief. In plaats van elk document één voor één door te nemen, beschik je over een taal waarmee je met één gerichte zoekopdracht onmiddellijk de informatie kunt vinden die aan je criteria voldoet.
Line 20: Line 20:


<div style="border:2px ;padding:9px; background-color:#158f68;">
<div style="border:2px ;padding:9px; background-color:#158f68;">
<span style="color:#FFFFFF;"><big>2/ Strategie voor je eerste zoekopdrachten</big></span> </div>
<span style="color:#FFFFFF;"><big>2. Strategie voor je eerste zoekopdrachten</big></span> </div>


Nu je een algemeen idee hebt van wat SPARQL is, volgt hier een strategie om je onderzoek goed te starten.
Nu je een algemeen idee hebt van wat SPARQL is, volgt hier een strategie om je onderzoek goed te starten.
Line 27: Line 27:


Deze aanpak stelt je in staat om:
Deze aanpak stelt je in staat om:
* Onze [https://data.arch.be/wiki/In-depth_search voorbeelden van SPARQL-query’s] te raadplegen;
* Onze [https://data.arch.be/wiki/In-depth_search/nl voorbeelden van SPARQL-query’s] te raadplegen;
* Gebruik te maken van <b>kunstmatige intelligentietools</b> die query’s genereren op basis van je behoeften.
* Gebruik te maken van <b>kunstmatige intelligentietools</b> die query’s genereren op basis van je behoeften.


Line 33: Line 33:


<div style="border:2px ;padding:9px; background-color:#158f68;">
<div style="border:2px ;padding:9px; background-color:#158f68;">
<span style="color:#FFFFFF;"><big>3/ De basis van een SPARQL-query</big></span> </div>
<span style="color:#FFFFFF;"><big>3. De basis van een SPARQL-query</big></span> </div>


Een SPARQL-query bestaat uit enkele essentiële onderdelen. Hier zijn de twee belangrijkste:
Een SPARQL-query bestaat uit enkele essentiële onderdelen. Hier zijn de twee belangrijkste:
Line 74: Line 74:


<div style="border:2px ;padding:9px; background-color:#158f68;">
<div style="border:2px ;padding:9px; background-color:#158f68;">
<span style="color:#FFFFFF;"><big>4/ De truc die het verschil maakt</big></span> </div>
<span style="color:#FFFFFF;"><big>4. De truc die het verschil maakt</big></span> </div>


Wanneer je een SPARQL-query opstelt, kan het lastig zijn om numerieke identificatiecodes voor gemeenten, erkenningsstatussen of verzetsorganisaties te onthouden. Gelukkig is er een <b>auto-aanvulfunctie</b> beschikbaar om je te helpen.
Wanneer je een SPARQL-query opstelt, kan het lastig zijn om numerieke identificatiecodes voor gemeenten, erkenningsstatussen of verzetsorganisaties te onthouden. Gelukkig is er een <b>auto-aanvulfunctie</b> beschikbaar om je te helpen.
Line 87: Line 87:


Deze methode helpt je <b>tijd te besparen</b> en <b>fouten te vermijden</b> bij het invoeren van identificaties.
Deze methode helpt je <b>tijd te besparen</b> en <b>fouten te vermijden</b> bij het invoeren van identificaties.
<div style="clear:both;"></div>
[[File:Sparql_autocompletion.gif|left|700px|thumb|alt=SPARQL automatisch aanvullen animatie|<small><b>Automatisch aanvullen in actie</b> — Druk op <code>Ctrl + Spatie</code> om de juiste eigenschap of waarde te vinden.</small>]]
<div style="clear:both;"></div>


<div style="border:2px ;padding:9px; background-color:#158f68;">
<div style="border:2px ;padding:9px; background-color:#158f68;">
<span style="color:#FFFFFF;"><big>5/ Labels tonen in de gewenste taal</big></span> </div>
<span style="color:#FFFFFF;"><big>5. Labels tonen in de gewenste taal</big></span> </div>


Wanneer je een Wikibase-database ondervraagt met SPARQL, worden in de resultaten soms <b>identificaties</b> weergegeven (zoals <code>Q102</code>) in plaats van duidelijke tekst (zoals "Anderlecht").   
Wanneer je een Wikibase-database ondervraagt met SPARQL, worden in de resultaten soms <b>identificaties</b> weergegeven (zoals <code>Q102</code>) in plaats van duidelijke tekst (zoals "Anderlecht").   
Line 122: Line 125:
</syntaxhighlight>
</syntaxhighlight>


<div lang="en" dir="ltr" class="mw-content-ltr">
<b>Tips</b>
<b>Tips</b>
<ul>
<ul>
<li>To automatically display labels in your browser or user’s preferred language, use: 
  <li>Gebruik <code>bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr,en"</code> om labels automatisch in de voorkeurstaal van je browser te tonen.</li>
<code>bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr,en"</code></li>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
  <li>Je kunt meerdere voorkeurstalen instellen.   
<li>You can also prioritize multiple languages.   
  Bijvoorbeeld, om eerst Nederlands te tonen en anders Engels:   
For example, to display labels in French and fall back to English if unavailable:   
  <code>bd:serviceParam wikibase:language "nl,en,[AUTO_LANGUAGE]"</code></li>
<code>bd:serviceParam wikibase:language "fr,en,[AUTO_LANGUAGE]"</code></li>
</ul>
</ul>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div style="border:2px ;padding:9px; background-color:#158f68;">
<div style="border:2px ;padding:9px; background-color:#158f68;">
<span style="color:#FFFFFF;"><big>6. Adding Additional Information</big></span> </div>
<span style="color:#FFFFFF;"><big>6. Extra informatie toevoegen</big></span> </div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Om je resultaten te verrijken, kun je meerdere kolommen toevoegen met extra informatie, zoals woonplaats, geboortedatum of andere relevante gegevens.   
To enrich your results, you can add multiple columns containing additional information, such as residence, date of birth, or other relevant details.   
Laat je inspireren door de [https://data.arch.be/wiki/Special:ListProperties lijst van eigenschappen] of bekijk hoe gegevens zijn gemodelleerd aan de hand van een voorbeeld zoals [https://data.arch.be/wiki/Item:Q6793 Andrée De Jongh].
To get inspired: check out the [https://data.arch.be/wiki/Special:ListProperties list of properties] or see how data is modeled using an example, like [https://data.arch.be/wiki/Item:Q6793 Andrée De Jongh].
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<b>Eenvoudige kolommen toevoegen</b><br>   
<b>Adding simple columns</b><br>   
Voeg simpelweg de eigenschappen toe die overeenkomen met de informatie die je wilt ophalen.
Just include the properties that correspond to the information you want to extract.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<b>Voorbeeld</b>: voeg de woonplaats en geboortedatum van personen toe.
<b>Example</b>: Add the residence and date of birth of individuals.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<syntaxhighlight lang="sparql">
<syntaxhighlight lang="sparql">
SELECT ?person ?personLabel ?residenceLabel ?birthDate
SELECT ?persoon ?persoonLabel ?woonplaatsLabel ?geboortedatum
WHERE {
WHERE {
   ?person wdt:P7 ?residence .       # P7: Residence
   ?persoon wdt:P7 ?woonplaats .         # P7: Woonplaats
   ?person wdt:P67 ?birthDate .       # P67: Date of birth
   ?persoon wdt:P67 ?geboortedatum .     # P67: Geboortedatum
</div>


  <div lang="en" dir="ltr" class="mw-content-ltr">
    SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl" }
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr" }
}
}
</syntaxhighlight>
</syntaxhighlight>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<b>Een kolom optioneel maken met <code>OPTIONAL</code></b><br>   
<b>Making a column optional with <code>OPTIONAL</code></b><br>   
Als bepaalde informatie mogelijk ontbreekt, gebruik dan <code>OPTIONAL</code> zodat je toch resultaten krijgt.   
If some information might be missing, use <code>OPTIONAL</code> to avoid limiting the results.   
Met <code>OPTIONAL</code> kun je gegevens ophalen zelfs als een kolom leeg is.
Adding <code>OPTIONAL</code> lets you retrieve results even if a column is empty.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<b>Voorbeeld</b>: voeg geboortedatum alleen toe als die beschikbaar is.
<b>Example</b>: Add date of birth only if the information is available.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<syntaxhighlight lang="sparql">
<syntaxhighlight lang="sparql">
SELECT ?person ?personLabel ?residenceLabel ?birthDate
SELECT ?persoon ?persoonLabel ?woonplaatsLabel ?geboortedatum
WHERE {
WHERE {
   ?person wdt:P7 ?residence .       # P7: Residence
   ?persoon wdt:P7 ?woonplaats .                         # P7: Woonplaats
</div>


  <div lang="en" dir="ltr" class="mw-content-ltr">
    OPTIONAL { ?persoon wdt:P67 ?geboortedatum . }       # P67: Optionele geboortedatum
OPTIONAL { ?person wdt:P67 ?birthDate . } # P67: Optional date of birth
</div>


   <div lang="en" dir="ltr" class="mw-content-ltr">
    
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr" }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl" }
}
}
</syntaxhighlight>
</syntaxhighlight>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<b>Tip</b>: om meerdere waarden in één kolom te combineren (bijvoorbeeld lidmaatschap van verschillende verzetsorganisaties), gebruik <code>CONCAT</code>.   
<b>Tip</b>: To combine multiple values into a single column (for example, to “concatenate” membership in multiple resistance organizations), use <code>CONCAT</code>.   
Zo groepeer je de informatie in één cel, terwijl je per persoon slechts één rij behoudt.
This allows grouping the data into a single cell while keeping one result row per person.
Bekijk de SPARQL-documentatie online om meer te leren over deze functie en haar variaties.
To explore this function and its variants, refer to the SPARQL documentation available online.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div style="border:2px ;padding:9px; background-color:#158f68;">
<div style="border:2px ;padding:9px; background-color:#158f68;">
<span style="color:#FFFFFF;"><big>7. Limiting the Number of Results</big></span> </div>
<span style="color:#FFFFFF;"><big>7. Het aantal resultaten beperken</big></span> </div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Om het aantal weergegeven resultaten te beperken (bijvoorbeeld als je een query test met veel kolommen), voeg je de clausule <code><b>LIMIT</b></code> toe aan je query.
To reduce the number of results displayed (especially if you’re testing a query with many columns), add the <code><b>LIMIT</b></code> clause to your query.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<b>Voorbeeld</b>: toon enkel de eerste 10 resultaten.
<b>Example</b>: Show only the first 10 results.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<syntaxhighlight lang="sparql">
<syntaxhighlight lang="sparql">
SELECT ?person ?personLabel ?birthDate
SELECT ?persoon ?persoonLabel ?geboortedatum
WHERE {
WHERE {
   ?person wdt:P67 ?birthDate .
   ?persoon wdt:P67 ?geboortedatum .
</div>


  <div lang="en" dir="ltr" class="mw-content-ltr">
    SERVICE wikibase:label {
SERVICE wikibase:label {
     bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl"
     bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr"
   }
   }
}
}
LIMIT 10
LIMIT 10
</syntaxhighlight>
</syntaxhighlight>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div style="border:2px ;padding:9px; background-color:#158f68;">
<div style="border:2px ;padding:9px; background-color:#158f68;">
<span style="color:#FFFFFF;"><big>8. Sorting the Results</big></span> </div>
<span style="color:#FFFFFF;"><big>8. Resultaten sorteren</big></span> </div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Om resultaten te sorteren op een bepaalde kolom, gebruik je de clausule <code><b>ORDER BY</b></code>.   
To sort results by a specific column, use the <code><b>ORDER BY</b></code> clause.   
Standaard is de sortering oplopend (<code><b>ASC</b></code>), maar je kunt ook een aflopende sortering toepassen met <code><b>DESC</b></code>.
By default, the sorting is ascending (<code><b>ASC</b></code>), but you can also specify descending order using <code><b>DESC</b></code>.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<b>Voorbeeld</b>: Sorteer op geboortedatum in oplopende volgorde.
<b>Example</b>: Sort results by birth date in ascending order.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<syntaxhighlight lang="sparql">
<syntaxhighlight lang="sparql">
SELECT ?person ?personLabel ?birthDate
SELECT ?persoon ?persoonLabel ?geboortedatum
WHERE {
WHERE {
   ?person wdt:P67 ?birthDate .
   ?persoon wdt:P67 ?geboortedatum .
</div>


  <div lang="en" dir="ltr" class="mw-content-ltr">
    SERVICE wikibase:label {
SERVICE wikibase:label {
     bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl"
     bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr"
   }
   }
}
}
ORDER BY ASC(?birthDate)
ORDER BY ASC(?geboortedatum)
</syntaxhighlight>
</syntaxhighlight>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div style="border:2px ;padding:9px; background-color:#158f68;">
<div style="border:2px ;padding:9px; background-color:#158f68;">
<span style="color:#FFFFFF;"><big>9. Adding Filters</big></span> </div>
<span style="color:#FFFFFF;"><big>9. Filters toevoegen</big></span> </div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Met filters kun je je resultaten verfijnen door specifieke voorwaarden toe te voegen aan je query.   
Filters allow you to refine your results by adding specific criteria to your query.   
Ze zijn handig om <b>meerdere criteria te combineren</b> of bepaalde waarden uit te sluiten.
They are useful for <b>combining multiple conditions</b> or excluding certain values.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
📝 <b>Eenvoudig voorbeeld zonder filter</b>
📝 <b>Simple example without filter</b>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Om personen te selecteren die aan een bepaald criterium voldoen, zoals bijvoorbeeld “woonachtig in Anderlecht”, kun je gewoon schrijven:
To select individuals matching a basic criterion—like “residing in Anderlecht”—you can write:
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<syntaxhighlight lang="sparql">
<syntaxhighlight lang="sparql">
?person wdt:P4 wd:Q102 .  # Selects individuals residing in Anderlecht
?persoon wdt:P4 wd:Q102 .  # Selecteer personen die in Anderlecht wonen
</syntaxhighlight>
</syntaxhighlight>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<b><code>FILTER</code> gebruiken voor specifieke voorwaarden</b><br>   
<b>Using <code>FILTER</code> for specific conditions</b><br>   
Als je de resultaten verder wilt verfijnen, gebruik dan <code>FILTER</code>.   
If you want to narrow your results even more, use <code>FILTER</code>.   
Zo kun je meerdere voorwaarden combineren. Bijvoorbeeld: selecteer personen die in Anderlecht wonen en geboren zijn na 1 januari 1920   
This allows you to combine multiple conditions.
([https://tinyurl.com/26b2wdxc Link om de query te testen]).
For example: select individuals living in Anderlecht and born after January 1st, 1920   
([https://tinyurl.com/26b2wdxc Link to test the query]).
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<syntaxhighlight lang="sparql">
<syntaxhighlight lang="sparql">
SELECT ?person ?personLabel ?residenceLabel ?birthDate
SELECT ?persoon ?persoonLabel ?woonplaatsLabel ?geboortedatum
WHERE {
WHERE {
   # Select residence and birth date of the person
   # Selecteer woonplaats en geboortedatum van de persoon
   ?person wdt:P7 ?residence .        # P7: Residence
   ?persoon wdt:P7 ?woonplaats .        # P7: Woonplaats
   ?person wdt:P67 ?birthDate .       # P67: Date of birth
   ?persoon wdt:P67 ?geboortedatum .   # P67: Geboortedatum
</div>


  <div lang="en" dir="ltr" class="mw-content-ltr">
    # Filter op personen die in Anderlecht wonen (wd:Q102) en geboren zijn na 1 januari 1920
# Filter for people living in Anderlecht (wd:Q102) and born after Jan 1, 1920
   FILTER(?woonplaats = wd:Q102 && ?geboortedatum >= "1920-01-01T00:00:00Z"^^xsd:dateTime)
   FILTER(?residence = wd:Q102 && ?birthDate >= "1920-01-01T00:00:00Z"^^xsd:dateTime)
</div>


  <div lang="en" dir="ltr" class="mw-content-ltr">
    # Gebruik de label-service voor leesbare resultaten
# Use the label service for readable output
   SERVICE wikibase:label {
   SERVICE wikibase:label {
     bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr"
     bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl"
   }
   }
}
}
</syntaxhighlight>
</syntaxhighlight>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<b>Geavanceerd gebruik</b> :   
<b>Advanced usage</b>:   
Je kunt ook <code>FILTER NOT EXISTS</code> gebruiken voor complexere uitsluitingen.   
It’s also possible to use <code>FILTER NOT EXISTS</code> for more complex exclusions.   
Hiermee kun je resultaten uitsluiten die aan een bepaalde voorwaarde voldoen.   
This allows you to filter out results that meet a specific condition.   
Je kunt deze functie verder ontdekken in geavanceerde SPARQL-documentatie.
You can explore this functionality further in advanced SPARQL resources.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div style="border:2px ;padding:9px; background-color:#158f68;">
<div style="border:2px ;padding:9px; background-color:#158f68;">
<span style="color:#FFFFFF;"><big>10. Visualizing Your Results</big></span> </div>
<span style="color:#FFFFFF;"><big>10. Resultaten visualiseren</big></span> </div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Om grafieken te maken op basis van je SPARQL-query’s heb je twee opties:
To create charts from your SPARQL queries, you have two options:
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<ul>
* Use the features of the <i>Query Service</i>: visualize the data in the form of tables, maps, bar charts, and timelines. For more details, see [https://www.wikidata.org/wiki/Wikidata:SPARQL_query_service/Wikidata_Query_Help/Result_Views the Wikidata documentation].
<li>Gebruik de functies van de <i>Query Service</i>: je kunt gegevens weergeven als tabellen, kaarten, staafdiagrammen en tijdlijnen. Meer info vind je in de [https://www.wikidata.org/wiki/Wikidata:SPARQL_query_service/Wikidata_Query_Help/Result_Views/nl documentatie van Wikidata].</li>
* Export the data and use other tools: you can export your results in CSV or TSV format, and then process them with data visualization tools.
<li>Exporteer de gegevens en gebruik andere tools: je kunt de resultaten exporteren als <b>CSV</b> of <b>TSV</b> en deze vervolgens verwerken met datavisualisatietools.</li>
</div>
</ul>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div style="border:2px ;padding:9px; background-color:#158f68;">
<div style="border:2px ;padding:9px; background-color:#158f68;">
<span style="color:#FFFFFF;"><big>11. Federated Queries</big></span> </div>
<span style="color:#FFFFFF;"><big>11. Federatieve zoekopdrachten</big></span> </div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<b>Geavanceerde functie</b>: Als je meerdere databanken tegelijk wil bevragen om je resultaten te verrijken, kun je <b>federatieve zoekopdrachten</b> gebruiken.   
<b>Advanced feature</b>: If you want to query multiple databases at once to enrich your results, you can use <b>federated queries</b>.   
Bekijk [https://data.arch.be/wiki/In-depth_search#%3E_Enriching_data_on_resistance_members_using_external_sources_(federated_query) dit voorbeeld] waarin informatie uit <i>Resistance in Belgium</i> wordt gecombineerd met gegevens uit externe bronnen (zoals Wikidata).
For an example, see [https://data.arch.be/wiki/In-depth_search#%3E_Enriching_data_on_resistance_members_using_external_sources_(federated_query) this sample query], which extracts information from <i>Resistance in Belgium</i> and combines it with data from external sources (e.g., Wikidata).
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div style="border:2px ;padding:9px; background-color:#158f68;">
<div style="border:2px ;padding:9px; background-color:#158f68;">
<span style="color:#FFFFFF;"><big>12. Saving and Sharing Your Queries</big></span> </div>
<span style="color:#FFFFFF;"><big>12. Je zoekopdrachten opslaan en delen</big></span> </div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Na het uitvoeren van een SPARQL-query kun je de link opslaan en delen.   
After running a SPARQL query, you can save and share its link.   
Klik op het tabblad <b>“Link”</b> boven de resultaten om een <b>Tiny URL</b> (verkorte link) te genereren. Zo kunnen anderen de query gemakkelijk openen en uitvoeren.
Click the <b>“Link”</b> tab above the results to generate a <b>Tiny URL</b> (a short link) that’s easy to copy and share.
This allows others to run the same query directly, with no extra effort.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div style="border:2px ;padding:9px; background-color:#158f68;">
<div style="border:2px ;padding:9px; background-color:#158f68;">
<span style="color:#FFFFFF;"><big>13. Downloading the Results</big></span> </div>
<span style="color:#FFFFFF;"><big>13. Resultaten downloaden</big></span> </div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Nadat je een query hebt uitgevoerd, gebruik je het tabblad <b>“Download”</b> (rechts boven de resultaten) om de gegevens te exporteren in verschillende formaten:   
After executing a query, use the <b>“Download”</b> tab (located on the right above the results) to export the data in different formats:   
<b>CSV</b> (compatibel met LibreOffice Calc of Excel), <b>TSV</b> of <b>JSON</b>.
<b>CSV</b> (compatible with LibreOffice Calc or Excel), <b>TSV</b>, or <b>JSON</b>.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<b>Best practice</b>: sla het bestand op met een duidelijke naam die je zoekcriteria weergeeft, zodat je het later makkelijk kunt terugvinden en hergebruiken.
<b>Best practice</b>: Save the file with a clear name that reflects your search criteria to make it easier to reuse later.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div style="border:2px ;padding:9px; background-color:#158f68;">
<div style="border:2px ;padding:9px; background-color:#158f68;">
<span style="color:#FFFFFF;"><big>14. Additional Resources</big></span> </div>
<span style="color:#FFFFFF;"><big>14. Extra bronnen</big></span> </div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Wil je je kennis verdiepen en complexere zoekopdrachten opstellen? Bekijk dan deze nuttige bronnen:
To deepen your knowledge and create more advanced queries, here are some useful resources:
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<ul>
<ul>
<li><b>List of properties</b> used to describe resistance members:<br>  
<li><b>Lijst van eigenschappen</b> gebruikt om verzetsleden te beschrijven:<br>
[https://data.arch.be/wiki/Special:ListProperties https://data.arch.be/wiki/Special:ListProperties]</li>
[https://data.arch.be/wiki/Special:ListProperties https://data.arch.be/wiki/Special:ListProperties]</li>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<li><b>Voorbeeldfiche van een persoon</b> (bv. Andrée De Jongh):<br>
<li><b>Example profile of an individual</b> (e.g. Andrée De Jongh):<br>
[https://data.arch.be/wiki/Item:Q6793 https://data.arch.be/wiki/Item:Q6793]</li>
[https://data.arch.be/wiki/Item:Q6793 https://data.arch.be/wiki/Item:Q6793]</li>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<li><b>Sample of nine SPARQL queries</b> organized by complexity level:<br> 
[https://data.arch.be/wiki/In-depth_search/fr https://data.arch.be/wiki/In-depth_search/fr]</li>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<li><b>Voorbeeld van negen SPARQL-query’s</b> opgedeeld in drie moeilijkheidsniveaus:<br>
<li><b>FAQ</b> to understand the context and content of the available data:<br>
[https://data.arch.be/wiki/In-depth_search/fr https://data.arch.be/wiki/In-depth_search/nl]</li>
[https://data.arch.be/wiki/FAQ/en https://data.arch.be/wiki/FAQ/en]</li>
 
<li><b>FAQ</b> over de context en de inhoud van de beschikbare gegevens:<br>
[https://data.arch.be/wiki/FAQ/nl https://data.arch.be/wiki/FAQ/nl]</li>
</ul>
</ul>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<b>Externe bronnen</b><br>   
<b>External Resources</b><br>   
We raden ook aan om externe bronnen te bekijken, zoals de <b>Wikidata-tutorials</b>, die een uitstekende introductie tot SPARQL-query’s bieden.   
We also encourage you to consult external resources, such as <b>Wikidata tutorials</b>, which offer excellent introductions to SPARQL queries.   
Deze voorbeelden gebruiken dezelfde software (Wikibase) als ons project, maar houd er rekening mee dat de gegevens en de structuur van de query’s specifiek zijn voor Wikidata en niet rechtstreeks toepasbaar zijn op <i>Resistance in Belgium</i>.
Although these examples use the same software (Wikibase) as this project, note that the data and query structure are specific to Wikidata and do not apply directly to the content of <i>Resistance in Belgium</i>.
 
</div>
<ul>
<li>[https://wdqs-tutorial.toolforge.org/ '''Wikidata Query Service Tutorial (interactief)'''] – Een interactieve tutorial voor beginners om SPARQL praktisch te leren gebruiken. <i>(in het Engels)</i></li>
 
<li>[https://www.wikidata.org/wiki/Wikidata:SPARQL_query_service/A_gentle_introduction_to_the_Wikidata_Query_Service/nl '''Een zachte introductie tot de Wikidata Query Service'''] – Een stap-voor-stap gids om de interface te begrijpen en je eigen query’s te schrijven.</li>
 
<li>[https://www.wikidata.org/wiki/Wikidata:SPARQL_tutorial/nl '''Wikidata:SPARQL-tutorial'''] – Een diepgaande en gestructureerde handleiding voor wie verder wil gaan in SPARQL.</li>


<div lang="en" dir="ltr" class="mw-content-ltr">
<li><b>AI-tools</b> kunnen je ook helpen bij het opstellen van query’s.</li>
* [https://wdqs-tutorial.toolforge.org/ '''Wikidata Query Service Tutorial (interactive)''']: An interactive tutorial for beginners to explore SPARQL queries practically. <i>(Resource in English)</i>.
</ul>
* [https://www.wikidata.org/wiki/Wikidata:SPARQL_query_service/A_gentle_introduction_to_the_Wikidata_Query_Service '''A gentle introduction to the Wikidata Query Service''']: A simple step-by-step guide to understand the interface and write queries.
* [https://www.wikidata.org/wiki/Wikidata:SPARQL_tutorial '''Wikidata:SPARQL Tutorial''']: A detailed and structured SPARQL guide for those who want to deepen their query writing.
* <b>AI-powered tools</b> that can assist you in writing queries.
</div>

Latest revision as of 09:15, 3 April 2025

1. Inleiding tot SPARQL

SPARQL gebruiken is alsof je een onderzoeker bent in een gigantisch archief. In plaats van elk document één voor één door te nemen, beschik je over een taal waarmee je met één gerichte zoekopdracht onmiddellijk de informatie kunt vinden die aan je criteria voldoet.

Binnen het project Resistance in Belgium maakt SPARQL het eenvoudiger om toegang te krijgen tot gegevens over verzetsleden: geboorteplaats, woonplaats, officiële erkenningsstatussen of lidmaatschap van een verzetsorganisatie.

Met SPARQL kun je:

  • Informatie filteren en combineren;
  • Je zoekopdrachten personaliseren met specifieke criteria;
  • Precieze gegevens ophalen zonder duizenden fiches handmatig te doorlopen;
  • Visualisaties genereren om je resultaten beter te interpreteren.

Deze aanpak geeft je waardevolle autonomie bij het analyseren van de gegevens uit Resistance in Belgium. Je kunt niet alleen namenlijsten opvragen, maar ook complexe verbanden ontdekken, zoals leden die betrokken waren bij meerdere organisaties of verschillende erkenningsstatussen kregen.

SPARQL geeft je de superkracht waar elke onderzoeker van droomt: stel een ultra-precieze vraag en zie het antwoord binnen milliseconden verschijnen. Natuurlijk vraagt dat enige oefening om onder de knie te krijgen. Geen zorgen! Deze handleiding is er om je te begeleiden en obstakels om te zetten in kansen… Wie zegt dat archiefonderzoek saai moet zijn?

Klaar om de kracht van SPARQL te beheersen? Aan de slag!

2. Strategie voor je eerste zoekopdrachten

Nu je een algemeen idee hebt van wat SPARQL is, volgt hier een strategie om je onderzoek goed te starten.

Er bestaan hulpmiddelen om SPARQL-query’s op te stellen, maar om meer autonomie en flexibiliteit te verwerven, is het vaak effectiever om te vertrekken van een bestaande query en die aan te passen aan je specifieke noden.

Deze aanpak stelt je in staat om:

Deze handleiding zal je begeleiden bij het begrijpen van de basisprincipes van SPARQL en je leren hoe je de essentiële elementen kunt herkennen om een bestaande query succesvol aan te passen.

3. De basis van een SPARQL-query

Een SPARQL-query bestaat uit enkele essentiële onderdelen. Hier zijn de twee belangrijkste:

  • SELECT: met deze clausule kies je welke informatie wordt weergegeven in de resultaten.
  • WHERE: met deze clausule kun je de gegevens filteren door specifieke criteria te definiëren. Hier beschrijf je aan welke voorwaarden de gegevens moeten voldoen.

📝 Eenvoudig voorbeeld

Hier is een query die de voor- en achternaam van personen in de databank ophaalt. Regels die beginnen met # zijn commentaarregels om elk onderdeel van de query uit te leggen.

SELECT ?naam ?voornaam
WHERE {
  ?persoon wdt:P1 wd:Q2 ;      # Selecteert personen
            wdt:P3 ?naam ;     # Haalt de achternaam op
            wdt:P2 ?voornaam . # Haalt de voornaam op
}

Uitleg bij het voorbeeld:

  1. SELECT ?naam ?voornaam :
    Geeft aan dat we de waarden van de variabelen ?naam en ?voornaam willen weergeven in de resultaten.
  2. WHERE { ... } :
    Geeft de structuur en voorwaarden van de query:
      • ?persoon wdt:P1 wd:Q2 : selecteert elementen die menselijke wezens zijn (P1 = type item, Q2 = persoon).
      • wdt:P3 ?naam : koppelt de familienaam aan de variabele ?naam (P3).
      • wdt:P2 ?voornaam : koppelt de voornaam aan de variabele ?voornaam (P2).

Je kent nu de basis van alle SPARQL-query’s. Je zult ze kunnen aanpassen aan je behoeften door eenvoudigweg de juiste variabelen te selecteren en filters, extra kolommen of geavanceerde opties toe te voegen.

4. De truc die het verschil maakt

Wanneer je een SPARQL-query opstelt, kan het lastig zijn om numerieke identificatiecodes voor gemeenten, erkenningsstatussen of verzetsorganisaties te onthouden. Gelukkig is er een auto-aanvulfunctie beschikbaar om je te helpen.

  • Praktische tip: druk op Ctrl + Spatie terwijl je een eigenschap of waarde typt. Hierdoor kun je termen in je eigen taal zoeken in plaats van te vertrouwen op numerieke identificatiecodes.

Voorbeeld:
Als je een gemeente zoals Anderlecht zoekt, hoef je het identificatienummer (bijvoorbeeld wd:Q102) niet uit het hoofd te kennen. Gebruik Ctrl + Spatie en begin "Anderlecht" te typen — de editor stelt automatisch het juiste identificatienummer voor.

Deze methode helpt je tijd te besparen en fouten te vermijden bij het invoeren van identificaties.

SPARQL automatisch aanvullen animatie
Automatisch aanvullen in actie — Druk op Ctrl + Spatie om de juiste eigenschap of waarde te vinden.
5. Labels tonen in de gewenste taal

Wanneer je een Wikibase-database ondervraagt met SPARQL, worden in de resultaten soms identificaties weergegeven (zoals Q102) in plaats van duidelijke tekst (zoals "Anderlecht"). Om de resultaten leesbaarder te maken, kun je labels (benamingen) ophalen in de taal van jouw voorkeur (Nederlands, Frans, Duits of Engels). Gebruik simpelweg SERVICE wikibase:label aan het einde van je query om labels in de juiste taal op te halen.

Hoe werkt het?
Voeg de service wikibase:label toe aan je query. Hier is een eenvoudig voorbeeld dat de naam van personen en hun woonplaats ophaalt, met labels in het Frans:

SELECT ?persoon ?persoonLabel ?woonplaats ?woonplaatsLabel
WHERE {
  ?persoon wdt:P1 wd:Q2.         # Selecteer personen
  ?persoon wdt:P7 wd:Q102.       # Woonplaats (P7) = Anderlecht (Q102)
  SERVICE wikibase:label {       # Service om labels op te halen
    bd:serviceParam wikibase:language "fr". # Gekozen taal: Frans
  }
}

Korte uitleg

  • SERVICE wikibase:label: activeert de service om labels op te halen.
  • bd:serviceParam wikibase:language "fr": bepaalt de taal van de labels (vervang "fr" door "nl", "en", "de" afhankelijk van je voorkeur).

AUTO_LANGUAGE gebruiken
Om labels automatisch weer te geven in de taal van je browser of gebruikersvoorkeur, gebruik AUTO_LANGUAGE:

bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr,en".

Tips

  • Gebruik bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr,en" om labels automatisch in de voorkeurstaal van je browser te tonen.
  • Je kunt meerdere voorkeurstalen instellen. Bijvoorbeeld, om eerst Nederlands te tonen en anders Engels: bd:serviceParam wikibase:language "nl,en,[AUTO_LANGUAGE]"
6. Extra informatie toevoegen

Om je resultaten te verrijken, kun je meerdere kolommen toevoegen met extra informatie, zoals woonplaats, geboortedatum of andere relevante gegevens. Laat je inspireren door de lijst van eigenschappen of bekijk hoe gegevens zijn gemodelleerd aan de hand van een voorbeeld zoals Andrée De Jongh.

Eenvoudige kolommen toevoegen
Voeg simpelweg de eigenschappen toe die overeenkomen met de informatie die je wilt ophalen.

Voorbeeld: voeg de woonplaats en geboortedatum van personen toe.

SELECT ?persoon ?persoonLabel ?woonplaatsLabel ?geboortedatum
WHERE {
  ?persoon wdt:P7 ?woonplaats .         # P7: Woonplaats
  ?persoon wdt:P67 ?geboortedatum .     # P67: Geboortedatum

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

Een kolom optioneel maken met OPTIONAL
Als bepaalde informatie mogelijk ontbreekt, gebruik dan OPTIONAL zodat je toch resultaten krijgt. Met OPTIONAL kun je gegevens ophalen zelfs als een kolom leeg is.

Voorbeeld: voeg geboortedatum alleen toe als die beschikbaar is.

SELECT ?persoon ?persoonLabel ?woonplaatsLabel ?geboortedatum
WHERE {
  ?persoon wdt:P7 ?woonplaats .                         # P7: Woonplaats

    OPTIONAL { ?persoon wdt:P67 ?geboortedatum . }        # P67: Optionele geboortedatum

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

Tip: om meerdere waarden in één kolom te combineren (bijvoorbeeld lidmaatschap van verschillende verzetsorganisaties), gebruik CONCAT. Zo groepeer je de informatie in één cel, terwijl je per persoon slechts één rij behoudt. Bekijk de SPARQL-documentatie online om meer te leren over deze functie en haar variaties.

7. Het aantal resultaten beperken

Om het aantal weergegeven resultaten te beperken (bijvoorbeeld als je een query test met veel kolommen), voeg je de clausule LIMIT toe aan je query.

Voorbeeld: toon enkel de eerste 10 resultaten.

SELECT ?persoon ?persoonLabel ?geboortedatum
WHERE {
  ?persoon wdt:P67 ?geboortedatum .

    SERVICE wikibase:label {
    bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl"
  }
}
LIMIT 10
8. Resultaten sorteren

Om resultaten te sorteren op een bepaalde kolom, gebruik je de clausule ORDER BY. Standaard is de sortering oplopend (ASC), maar je kunt ook een aflopende sortering toepassen met DESC.

Voorbeeld: Sorteer op geboortedatum in oplopende volgorde.

SELECT ?persoon ?persoonLabel ?geboortedatum
WHERE {
  ?persoon wdt:P67 ?geboortedatum .

    SERVICE wikibase:label {
    bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl"
  }
}
ORDER BY ASC(?geboortedatum)
9. Filters toevoegen

Met filters kun je je resultaten verfijnen door specifieke voorwaarden toe te voegen aan je query. Ze zijn handig om meerdere criteria te combineren of bepaalde waarden uit te sluiten.

📝 Eenvoudig voorbeeld zonder filter

Om personen te selecteren die aan een bepaald criterium voldoen, zoals bijvoorbeeld “woonachtig in Anderlecht”, kun je gewoon schrijven:

?persoon wdt:P4 wd:Q102 .  # Selecteer personen die in Anderlecht wonen

FILTER gebruiken voor specifieke voorwaarden
Als je de resultaten verder wilt verfijnen, gebruik dan FILTER. Zo kun je meerdere voorwaarden combineren. Bijvoorbeeld: selecteer personen die in Anderlecht wonen en geboren zijn na 1 januari 1920 (Link om de query te testen).

SELECT ?persoon ?persoonLabel ?woonplaatsLabel ?geboortedatum
WHERE {
  # Selecteer woonplaats en geboortedatum van de persoon
  ?persoon wdt:P7 ?woonplaats .        # P7: Woonplaats
  ?persoon wdt:P67 ?geboortedatum .    # P67: Geboortedatum

    # Filter op personen die in Anderlecht wonen (wd:Q102) en geboren zijn na 1 januari 1920
  FILTER(?woonplaats = wd:Q102 && ?geboortedatum >= "1920-01-01T00:00:00Z"^^xsd:dateTime)

    # Gebruik de label-service voor leesbare resultaten
  SERVICE wikibase:label {
    bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl"
  }
}

Geavanceerd gebruik : Je kunt ook FILTER NOT EXISTS gebruiken voor complexere uitsluitingen. Hiermee kun je resultaten uitsluiten die aan een bepaalde voorwaarde voldoen. Je kunt deze functie verder ontdekken in geavanceerde SPARQL-documentatie.

10. Resultaten visualiseren

Om grafieken te maken op basis van je SPARQL-query’s heb je twee opties:

  • Gebruik de functies van de Query Service: je kunt gegevens weergeven als tabellen, kaarten, staafdiagrammen en tijdlijnen. Meer info vind je in de documentatie van Wikidata.
  • Exporteer de gegevens en gebruik andere tools: je kunt de resultaten exporteren als CSV of TSV en deze vervolgens verwerken met datavisualisatietools.
11. Federatieve zoekopdrachten

Geavanceerde functie: Als je meerdere databanken tegelijk wil bevragen om je resultaten te verrijken, kun je federatieve zoekopdrachten gebruiken. Bekijk dit voorbeeld waarin informatie uit Resistance in Belgium wordt gecombineerd met gegevens uit externe bronnen (zoals Wikidata).

12. Je zoekopdrachten opslaan en delen

Na het uitvoeren van een SPARQL-query kun je de link opslaan en delen. Klik op het tabblad “Link” boven de resultaten om een Tiny URL (verkorte link) te genereren. Zo kunnen anderen de query gemakkelijk openen en uitvoeren.

13. Resultaten downloaden

Nadat je een query hebt uitgevoerd, gebruik je het tabblad “Download” (rechts boven de resultaten) om de gegevens te exporteren in verschillende formaten: CSV (compatibel met LibreOffice Calc of Excel), TSV of JSON.

Best practice: sla het bestand op met een duidelijke naam die je zoekcriteria weergeeft, zodat je het later makkelijk kunt terugvinden en hergebruiken.

14. Extra bronnen

Wil je je kennis verdiepen en complexere zoekopdrachten opstellen? Bekijk dan deze nuttige bronnen:

Externe bronnen
We raden ook aan om externe bronnen te bekijken, zoals de Wikidata-tutorials, die een uitstekende introductie tot SPARQL-query’s bieden. Deze voorbeelden gebruiken dezelfde software (Wikibase) als ons project, maar houd er rekening mee dat de gegevens en de structuur van de query’s specifiek zijn voor Wikidata en niet rechtstreeks toepasbaar zijn op Resistance in Belgium.