Abfrage
Für Wikidata Query wurde mithilfe der SPARQL-Codiersprache eine Abfrage entwickelt, die die neolithischen Fundorte auf eine Karte darstellt und sie farblich nach Jahrtausend markiert. Ergebnis dessen ist diese Abfrage:
Im Folgenden werden die einzelnen Teile des Codes genauer erklärt:
Der erste Teil besteht aus allen Begriffen, die bei der Abfrage als Titel verwendet werden.
SELECT ?item ?itemLabel ?pic ?coord ?beginn ?end ?layer
Mit ?item werden die gesuchten Datensätze benannt und mit ?itemLabel wird gleich dazu deren Titel in der Tabelle mit den Ergebnissen aufgeführt und nicht nur die eindeutige Bezeichnung. ?pic ist die Abkürzung für picture, verwendet für die Datensätze mit Fotos, ?coord steht für die Koordinaten, die für eine Karte benötigt werden. ?beginn und ?end sind die Zeitpunkte, an denen eine Fundort entstand und verlassen oder zerstört wurde, diese Angaben können für den Zeitstrahl verwendet werden. ?layer wird für die Gruppierung der Fundorte nach Jahrtausenden verwendet.
Im zweiten Teil wird eine Abfrage gestartet, die für alle Fundorte gelten muss. Im vierten Teil folgen weitere optionale Abfragen.
?item wdt:P31 wd:Q839954;
wdt:P2348 wd:Q36422;
wdt:P625 ?coord;
wdt:P571 ?beginn.
In der ersten Zeile werden alle Datensätze mit der Eigenschaft instance of nach dem Wert archaeological site, dem archäologischen Fundort gesammelt. In der zweiten Zeile werden diese Datensätze überprüft, ob sie unter der Eigenschaft time period den Wert neolithic era, Neolithikum enthalten. In der dritten Zeile werden die Koordinaten dieser Datensätze abgefragt. Die vierte Zeile fragt nach dem Datum, an dem der Fundort entstand.
Im dritten Teil werden die Fundorte mithilfe der Anfangsdaten der Siedlungen (?beginn) gruppiert. Dies erlaubt es, die Fundorte nach Jahrtausend in der Karte farbig einzufärben.
BIND(
IF(?beginn < "-29999^^xsd:dateTime, "30'000+ BCE",
IF(?beginn < "-14999"^^xsd:dateTime, "30'000-15'000 BCE",
IF(?beginn < "-9999"^^xsd:dateTime, "15'000-10'000 BCE",
IF(?beginn < "-8999"^^xsd:dateTime, "10'000-9'000 BCE",
IF(?beginn < "-7999"^^xsd:dateTime, "9'000-8'000 BCE",
IF(?beginn < "-6999"^^xsd:dateTime, "8'000-7'000 BCE",
IF(?beginn < "-5999"^^xsd:dateTime, "7'000-6'000 BCE",
IF(?beginn < "-4999"^^xsd:dateTime, "6'000-5'000 BCE",
IF(?beginn < "-3999"^^xsd:dateTime, "5'000-4'000 BCE",
IF(?beginn < "-2999"^^xsd:dateTime, "4'000-3'000 BCE",
"after 3000 BCE"))))))))))
AS ?layer).
BIND… AS ?layer steht für das Gruppieren der Einträge. Mit IF werden die Bedingungen der einzelnen Gruppen definiert. Diese werden jeweils nach Jahrtausend eingegrenzt, daher enden diese Daten jeweils mit -999. Damit die Daten auch als Jahre erkannt werden, müssen die mit ^^xsd:dateTime definiert werden. Beschriftet werden diese einzelnen Gruppen mit den in Anführungszeichen stehenden Texten (Bsp. "9'000-8'000 BCE") Damit diese Abfrage funktioniert, braucht es eine Beschriftung für die Datensätze, die nicht in einer dieser IF Abfragen vorkommen, hier wäre dies "after 3000 BCE". Da die meisten Fundorte nach 10'000 BCE entstanden, sind die Zeitabstände davor grösser. Dies ermöglicht eine kürzere Abfrage. Sollten in Zukunft mehr Fundorte ergänzt werden ist der Zeitaufwand gering, die einzelnen Jahrtausende zu ergänzen.
Im vierten Teil werden optionale Abfragen durchgeführt.
Optional{
?item wdt:P576 ?end;
wdt:P18 ?pic.
Als erstes werden die Datensätze nach dem Datum des Verlassens oder der Zerstörung des Fundortes abgefragt. In einer zweiten Zeile nach einem Foto. Diese Daten erscheinen auf der Karte und in der Tabelle und dienen als zusätzliche Informationen für den Benutzer.
Mit dem folgenden Befehl werden als Label die Einträge in Englisch verwendet.
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en"
Die Datensätze werden in der Tabelle nach dem Beginn der Besiedlung geordnet. Dies geschieht in aufsteigend Reihenfolge.
Order by asc (?beginn)