query-d7df164907b385764391573b92f67b58
ORDER und LIMITWir kehren nun zurück zu unserer geplanten Vorstellung weiterer SPARQL-Features. Bislang hatten wir nur Abfragen, bei denen wir an allen Ergebnissen interessiert waren. Oft jedoch interessieren uns nur Ergebnisse mit extremen Ausprägungen, zum Beispiel die ältesten, jüngsten, frühesten, spätesten, bevölkerungsreichsten usw. Diesen Abfragen ist gemein, dass die Ergebnisse in eine Rangfolge gebracht werden, und wir dann nur die obersten Ergebnisse dieser Rangfolge betrachten wollen. . LIMIT und ORDER BY-Block platzieren (hinter den geschweiften Klammern, nicht dazwischen!): WHERE {}Dies erreichen wir mit zwei Schlüsselwörtern, die wir hinter dem .) irgendwas gleichwertig zu ASC(irgendwas)ending) zu sortieren. (Ohne diese Angabe wird immer aufsteigend sortiert; daher ist descending) bzw. absteigend (englisch asc ergänzt werden, um die Ergebnisse aufsteigend (englisch DESC() oder ASC()) als Ausdrücke, aber es folgen später noch weitere. Dieser Ausdruck kann auch mit ?irgendwas ein beliebiget Ausdruck sein – bislang kennen wir nur Variablen (irgendwas. Dabei kann irgendwas sortiert die Ergebnisse nach ORDER BY irgendwas gibt nur das allererste Element aus. LIMIT 1 zum Beispiel begrenzt das Ergebnis auf 10 Elemente. LIMIT 10 ist dabei eine beliebige natürliche Zahl. count Ergebnissen ab; anzahl schneidet die Ergebnisliste nach LIMIT anzahl die Abfrage enorm beschleunigen, weil WDQS die Suche beendet, sobald das Limit erreicht wurde.) LIMIT verwenden. In diesem Fall ist die Gesamtergbnismenge aber nicht sortiert und damit das Ergebnis der Limitierung willkürlich. Das kann in Ordnung sein, wenn man einfach nur einige Ergebnisse haben möchte, egal welche. In jedem Fall kann ORDER BY auch ohne LIMIT(Man kann ergänzen. LIMIT und ORDER BY.) Du kannst zuerst nach den Ländern mit ihrer Bevölkerungszahl suchen und dann mit P:P1082 und die Eigenschaft für die Bevölkerungszahl (Q3624078)sovereign state Zeit für eine Übung! Versuche eine Abfrage über die zehn bevölkerungsreichsten Länder der Erde zu schreiben. (Ein Land ist Hier meine Lösung:
Use at
- https://query.wikidata.org/sparql
PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX bd: <http://www.bigdata.com/rdf#>
SELECT ?land ?landLabel ?einwohnerzahl
WHERE
{
?land wdt:P31/wdt:P279* wd:Q3624078;
wdt:P1082 ?einwohnerzahl.
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
ORDER BY DESC(?population)
LIMIT 10