Help:Seitenauswahl
Das wichtigste an der semantischen Suche in Semantic MediaWiki (SMW) ist die einfache Abfragesprache, mit der beschrieben werden kann, welche Seiten als Ergebnis einer Abfrage ausgegeben werden sollen. Abfragen wählen Seiten aufgrund der in ihnen hinterlegten Informationen aus. Dies können Kategorien, Attribute und weitere Merkmale, wie bspw. Namensräume sein. Die nun folgenden Abschnitte geben eine Einführung in die Abfragesprache von SMW.
Contents
- 1 Kategorien und Attributwerte
- 2 Attributwerte: Platzhalter und Komparatoren
- 3 Disjunktionen (logisches ODER)
- 4 Einzelne Seiten beschreiben
- 5 Abfrageergebnisse auf einen Namensraum beschränken
- 6 Unterabfragen und Attributketten
- 7 Vorlagen und Variablen einsetzen
- 8 Abfrageergebnisse sortieren
- 9 Auf Abfrageergebnisse verlinken
- 10 Nicht realisierbare Möglichkeiten
Kategorien und Attributwerte[edit]
Im Einführungsbeispiel zur semantischen Suche wurde eine einzelne Bedingung in Form eines Attributs mit seinem Attributwert ([[Liegt in::Deutschland]]
) vorgestellt, mit der beschrieben wurde, welche Seiten ausgegeben werden sollen. Der Auszeichnungstext entspricht dabei genau dem, was man auch in anderen Fällen angeben würde, um „behaupten“ zu können, das eine bestimmte Seite dieses Attribut mitsamt seines Attributwerts enthält. Das Formulieren dieser Bedingung in der semantischen Abfragesprache führt bei SMW dazu, dass mit der durch sie gebildeten Abfrage, alle zutreffenden Seiten ausgegeben werden.
Dies stellt ein allgemeingültiges Schema dar:
- Die Syntax zur Abfrage nach Seiten, die eine Bedingung erfüllt, entspricht genau der Syntax, mit der eindeutig behauptet werden kann, dass sie diese Bedingung enthält.
Die folgenden drei Abfragen verdeutlichen was dies bedeutet:
[[Kategorie:Schauspieler]]
gibt direkt oder indirekt über Unterkategorien sowie deren Unterkategorien usf., alle in dieser Kategorie enthaltenen Seiten aus.[[geboren in::Berlin]]
gibt alle Seiten aus, welche die Annotation enthalten, dass jemand in Berlin geboren wurde.[[Körpergröße::175cm]]
gibt alle Seiten aus, welche die Annotation enthalten, dass jemand die Körpergröße von 175 cm hat.
Sofern andere Kategorien und Attribute als die oben angegebenen genutzt werden, kann bereits nach anderen Seiten gefragt werden, die bestimmte Annotationen enthalten. Der nächste Schritt ist die Kombination dieser drei Abfragen:
[[Kategorie:Schauspieler]] [[geboren in::Berlin]] [[Körpergröße::175cm]]
fragt nach Schauspielern die in Berlin geboren wurden und die Körpergröße von 175 cm haben. In anderen Worten: Sofern viele Bedingungen in einer Abfrage zusammengefasst werden, wird das Ergebnis auf die Seiten beschränkt, die alle drei Bedingungen erfüllen. Wir erhalten somit ein logisches UND. Zur besseren Darstellung und Übersichtlichkeit kann man Zeilenumbrüche in die Abfrage einfügen, so dass sie wie folgt aussieht:
[[Kategorie:Schauspieler]] [[geboren in::Berlin]] [[Körpergröße::180cm]]
Es werden dieselben Ergebnisse ausgegeben, wie vorher. Da nur Seiten ausgegeben werden, die alle geforderten Bedingungen erfüllen, muss zudem folgendes beachtet werden: Fehlende Attributwerte führen nicht zur Ausgabe als Ergebnis. Sofern bspw. für einen Schauspieler keine Körpergröße angegeben wurde, wird dieser niemals im Ergebnis einer Abfrage mit dieser Bedingung ausgegeben werden.
Im Zusammenhang mit auf Seiten angegebenen Attributwerten ignoriert SMW gewöhnlich alle vorangestellten oder nachfolgenden Leerzeichen: [[Körpergröße::175cm]]
und [[Körpergröße:: 175cm ]]
haben daher dieselbe Bedeutung. Datentypen wie der Datentyp Zahl können weitere solche Eingenschaften haben die ignoriert werden und zur gleichen Bedeutung unterschiedlicher Angaben führen: Bspw. werden hier zur Tausendertrennung genutzte Punkte übergangen. SMW wird ebenso, analog zu dem Verhalten von MediaWiki, synonyme Seitennamen gleich behandeln: Semantisches Wiki
, Semantisches_Wiki
und semantisches Wiki
verweisen daher auf dieselbe Seite.
Sofern bestimmte Abfragebestandteile häufig eingesetzt werden, kann man auch ein sie stellvertretendes Konzept erstellen. Ein Konzept ist quasi eine dynamische virtuelle Kategorie, die analog der Angabe einzelner Kategorien eingesetzt werden können.
- Abfragen nach Entfernungen
Ein Sonderfall ist die Abfragesyntax, die verwendet werden muss, um Seiten mit einen Attributwert zu einem Attribut vom Datentyp Geografische Koordinaten nach einer bestimmten Entfernung zu dieser geografischen Koordinate abzufragen. Siehe hierzu der Abschnitt zu Abfragen nach Entfernungen (en) für weitere Informationen. Um geografische Koordinaten einsetzen zu können, muss allerdings zusätzlich die Softwareerweiterung Semantic Maps installiert sein.
Attributwerte: Platzhalter und Komparatoren[edit]
Die in den vorangegangenen Abschnitten verwandten Beispiele nutzen spezifischen Abfragebedingungen, also „Berlin“ und „175cm“ als die gesuchten Attributwerte. Indes, in vielen Fällen sucht man nicht unbedingt nach speziellen Attributwerten, sondern nach Attributwertebereichen, wie z. B. nach allen Schauspielern, die größer als 175 cm sind. Es ist aber auch denkbar nach allen Seiten suchen zu wollen, auf denen für ein bestimmtes Attribut ein Attributwert angegeben wurde. Man könnte bspw. nach verstorbenen Personen abfragen, also Personen für die ein Attributwert beim Attribut „Todesdatum“ angegeben wurde. Solche Abfragebedingungen sind unter Verwendung von Platzhaltern und Komparatoren möglich.
Platzhalter[edit]
Sie werden mit dem Zeichen „+
“ gesetzt, was die Ausgabe aller Attributwerte für die angegebenen Bedingung ermöglicht. Ein Beispiel: [[geboren in::+]]
gibt alle Seiten aus auf denen ein Wert für dieses Attribut, also der Geburtsort, angegeben wurde. Der Platzhalter „+
“ kann allerdings nur für sich alleine gesetzt werden. Siehe den Abschnitt „ähnlich“, „nicht ähnlich“ für Informationen zu den Platzhaltern „*
“ und „?
“.
Komparatoren[edit]
Dies sich spezielle Zeichen wie bspw. „<
“ oder „>
“. Sie werden direkt nach dem ::
in den Attributbedingungen angegeben.
- << und >> „kleiner als“ sowie „größer als“
- < und > „kleiner als oder gleich zu“ sowie „größer als oder gleich zu“ sofern $smwStrictComparators mit ‚false‘ eingestellt ist (Standardeinstellung) oder „kleiner als“ sowie „größer als“ sofern $smwStrictComparators mit ‚true‘ eingestellt ist.
- ≤ und ≥ „kleiner als oder gleich zu“ sowie „größer als oder gleich zu“
- ! „nicht gleich“ („ungleich“)
- ~ „ähnlich“ bei Attributen des Datentyps Zeichenkette
- !~ „nicht ähnlich“ bei Attributen des Datentyps Zeichenkette
Komparatoren funktionieren nur in Verbindung mit Attributwerten und nicht bei Anweisungen, die Kategorien betreffen. Der Umfang an zur Verfügung stehenden Komparatoren kann für eine Wiki mit der Einstellung $smwgQComparators festgelegt werden. Standardmäßig sind alle vorhandenen Komparatoren zulässig: <, >, ≤, ≥, !, ~, !~, << und >>.
Abhängig vom Parameterwert zu $smwStrictComparators unterscheidet sich das Verhalten der Zeichen >
und <
bei Abfragen. Dies muss unbedingt bedacht werden, sofern diese Konfigurationseinstellung verändert wird, da dies unterschiedliche Ergebnisausgaben bewirkt. Siehe hierzu oben den Hinweis beim jeweiligen Komparator.
Sofern Komparatoren auf Seiten angewendet werden, betrachten diese lediglich deren Namen, nicht aber das möglicherweise vorangestellte Namensraumpräfix. Dies kann auf der Ebene einzelner Seiten durch das Setzen des in MediaWiki zur Verfügung gestellten „magischen Worts“ {{DEFAULTSORTKEY:abweichender Seitenname}}
angepasst werden. Diese Änderung betrifft alle Komparatoren einschließlich „!“, „~“ und „!~“. Es ist in diesem Zusammenhang nicht möglich mehrere abweichende Seitenbezeichnungen für dieselbe Seite zu definieren. Zudem werden Seitenweiterleitungen von abweichend benannten Seiten #WEITERLEITUNG [[Seitenname]]
nicht berücksichtigt.
„nicht gleich“ („ungleich“)[edit]
Es können Seiten abgefragt werden, die über einen Attributwert zu einem Attribut verfügen, der einem angegebenen Wert nicht entspricht. Ein Beispiel:
[[Postleitzahl::!10115]]
wird alle Seiten ausgeben, auf denen eine Postleitzahl hinterlegt wurde, die nicht „10115“ entspricht. Mit dieser Abfrage werden aber nicht diejenigen Seiten ausgegeben, auf denen die Postleitzahl „10115“ nicht hinterlegt wurde. Vielmehr werden nur alle Seiten ausgegeben, deren hinterlegte Postleitzahl nicht „10115“ entspricht. Seiten auf denen keine Postleitzahl hinterlegt wurden, werden dabei also nicht als Ergebnis der Abfrage ausgegeben.
Analog zum Komparator für Gleichheit (Standardeinstellung), macht der Einsatz eigener Maßeinheiten eventuell Rundungen bei der Werteumwandlung erforderlich, die in der Folge zu unerwarteten Abfrageergebnissen führen können. Die Abfrage [[Körpergröße::!6.00 ft]]
kann z. B. Seiten ausgeben auf denen die Körpergröße „6.00 Fuß“ hinterlegt ist, da der entsprechende genaue numerische Wert nicht tatsächlich „6“ entspricht. In solchen Fällen ist es zielführender nach Seiten abzufragen, die über einen Attributwert für ein Attribut verfügen, der außerhalb eines bestimmten Wertebereichs liegt. Eine solche Abfrage wird über ein logisches ODER (siehe unten) mit „<“ und „>“ ausgedrückt.
„kleiner als oder gleich zu“, „größer als oder gleich zu“[edit]
In Bezug auf numerische Werte wird man oftmals Seiten abfragen, deren für ein Attribut hinterlegten Attributwerte in einem bestimmten Wertebereich liegen. Ein Beispiel:
[[Kategorie:Schauspieler]] [[Körpergröße::>6 ft]] [[Körpergröße::<7 ft]]
fragt alle Schauspieler ab, deren Körpergröße zwischen sechs und sieben Fuß liegt. Hierbei wird zudem die automatisch Einheitenumrechnung genutzt: Selbst wenn zu einem Schauspieler die Körpergröße mit [[Körpergröße::195cm]]
festgelegt wurde, wird die entsprechende Seite als zutreffende Antwort ausgewählt. Voraussetzung ist dabei allerdings, dass der für Körpergröße festgelegte Datentyp beide Einheiten versteht und ineinander Umrechnen kann. Siehe hierzu auch die Hilfeseite zu eigenen Maßeinheiten. In der Standardkonfiguration (siehe $smwStrictComparators) stehen die Komparatoren „<
“ und „>
“ für „kleiner als oder gleich zu“ sowie „größer als oder gleich zu“. Das Gleichheitszeichen =
wird daher nicht benötigt.
Derartige Abfragebedingungen bezüglich Attributwerten sind dann sinnvoll, wenn sie aufgrund ihrer Bedeutung naturgegeben sortierbar sind. Es ist bspw. sinnvoll nach Datumsangaben abzufragen, die nach einem bestimmten Tag liegen ([[Anfangsdatum::>6. Mai 2006]]
) nicht aber nach URLs ([[Website-URL::>http://www.semantic-mediawiki.org]]
). Sofern ein Datentyp nicht naturgegeben sortierbar ist, sortiert SMW in alphabetischer Reihenfolge anhand normalisierter Datenwerte, wie sie beim RDF-Export angewandt wird. Daher ist es bei Attributen des Datentyps Zeichenkette möglich mit den Komparatoren „<
“ und „>
“ Buchstabenbereiche auszuwählen. Man kann also mit [[Nachname::>Do]] [[Nachname::<G]]
alle Nachnamen, die zwischen „Do“ und „G“ liegen in Erfahrung bringen. Im Fall von Seitennamen bezieht die Ausgabe nicht die Namensraumpräfixe mit ein.
Es ist möglich, dass ein abzufragender Attributwert mit einem Zeichen wie „<
“ beginnt. In diesem Fall kann man SMW anweisen diesen Attributwert tatsächlich als Attributwert zu interpretieren und nicht als zu beachtender Komparator, indem man ein Leerzeichen nach dem ::
setzt. Mit [[HTML-Tag:: <br />]]
werden die HTML-Tags mit dem Wert „<br />
“ ausgegeben, nicht aber bei [[HTML-Tag::<br />]]
.
„kleiner als“, „größer als“[edit]
Der exakte Wert eines Attributs kann auch von der Ergebnisausgabe ausgeschlossen werden. Sofern man z. B. einen Schauspieler finden möchte, der größer als 1,75 m ist, so kann man dies mit der Kombination der beiden Komparatoren „>
“ und „!
“ erreichen:
[[Kategorie:Schauspieler]] [[Körpergröße::>1,75m]] [[Körpergröße::!1,75m]]
„ähnlich“, „nicht ähnlich“[edit]
Die Komparatoren „~
“ und „!~
“ funktionieren nur bei Attributen der Datentypen „Zeichenkette“ und „Seite“. Im Falle solcher Abfragebedingungen können zudem die Platzhalter „*
“ für Buchstabensequenzen sowie „?
“ für einzelne Buchstaben eingesetzt werden. Bei der Abfrage [[Anschrift::~*Unter den Linden*]]
werden alle bspw. Anschriften ausgegeben, die „Unter den Linden“ enthalten oder bei [[Anrede::~*F?.]]
„Fr.“, nicht aber „Frl.“.
Attributwerte, die mit bestimmten Symbolen beginnen[edit]
Es gibt Fälle in denen die Attributwerte eines Attributs mit einem der folgenden Symbole beginnt: <, ≤, >, ≥, =, ! und ~. Semantic MediaWiki kann diese nicht von der Software festgelegten Komparatoren unterscheiden. Um dieses Problem zu vermeiden können Attribute Leerschritte erkennen, die direkt nach dem Attributauszeichner ::
gesetzt werden. So wird <br />
im Attribut [[Beispielattribut:: <br />]] auch als Attributwert erkannt. [[Beispielattribut::<br />]] würde hingegen zu Fehlern führen.
Disjunktionen (logisches ODER)[edit]
Bei Disjunktionen handelt es sich um ODER-Bedingungen (logisches ODER), die mehrere alternative Bedingungen für Abfrageergebnisse möglich machen. Hierfür gibt es zwei Operatoren:
- Der Operator „
OR
“ wird genutzt, um die Ergebnisse von zwei Abfragen gleichzeitig auszugeben. - Der Operator „
||
“ wird genutzt, um Disjunktionen bei Werten, Kategorien und Seiten auszugeben.
In jedem Fall erfordert die Disjunktion, dass mindestens eine der möglichen Ergebnisalternativen erfüllt wird. Beispielsweise beschreibt
[[geboren in::Berlin]] OR [[geboren in::Frankfurt]]
alle Seiten von Personen, die entweder in Berlin oder („OR
“) in Frankfurt geboren wurden. Diese Abfrage kann auch mit
[[geboren in::Berlin||Frankfurt]]
ausgedrückt werden. Letztgenannte Variante ist nur möglich, sofern Abfragen Werte des gleichen Attributs, der gleichen Kategorie oder bei Seiten erfassen sollen. Abfragen mit dem Operator „||
“ auszudrücken ist im Vergleich prägnanter. Allerdings können nicht alle Disjunktionen auf diese Art beschrieben werden, wie das folgende Beispiel zeigt:
[[geboren in::Berlin]] OR [[Kategorie:Schauspieler]]
Zum einen wird hier der Wert eines Attributs sowie der einer Kategorie abgefragt. Eine Zusammenführung ist hier nicht möglich.
Der Operator „||
“ kann nicht nur bei Attributen sondern auch bei Kategorien eingesetzt werden. Ein Beispiel:
[[Kategorie:Bühnenschauspieler||Filmschauspieler]]
Einzelne Seiten beschreiben[edit]
Bislang waren alle Bedingung abhängig von einer Annotation, also der Angabe eines Attributwerts zu einem Attribut oder einer Kategorie, auf einer Seite. Es gibt aber auch die Möglichkeit Seiten oder Seiten bestimmter Namensräume direkt auszuwählen.
Die direkte Angabe des Seitennamens, auch zusammen mit dem Namensraumpräfix, oder einer durch den Operator „||
“ getrennte Liste von Seitennamen, führt zur Auswahl der betreffenden Seiten. Die Beispielabfrage
[[Deutschland||USA||Benutzer:Magda Muster]]
ergibt, sofern die Seiten tatsächlich vorhanden sind, drei Ergebnisse. Es ist zu Beachten, daß das Namensraumpräfix in der Ergebnisausgabe nicht mit angezeigt wird. Um das Namensraumpräfix zu ermitteln, muss man die Maus über den Link führen, damit die Hilfseinblendung erscheint, die diese Angabe enthält.
Eine sinnvolle Frage unter Verwendung der Angabe einzelner Seiten könnte bspw. lauten: „Welcher der vier Schauspieler Klaus Maria Brandauer, Gustaf Gründgens, Otto Eduard Hasse oder Klaus Kinski ist größer als 1,75 m?“ Die Abfrage hierzu würde lauten:
[[Klaus Maria Brandauer||Gustaf Gründgens||Otto Eduard Hasse||Klaus Kinski]] OR [[Körpergröße::>>175cm]]
Eine ideale Anwendung dieser Funktion wäre die Abfrage nach dem Wert eines Attributes auf einer angegebenen Seite, z. B. die Ausgabe der Körpergröße von Klaus Kinski.
Um auf diese Weise eine Kategorie auszuwählen, muss das Zeichen „:
“ vor den Namen der Kategorie gesetzt werden. Dadurch wird eine Verwechslung zwischen [[Kategorie:Schauspieler]]
, womit alle Schauspieler ausgegeben werden und [[:Kategorie:Schauspieler]]
, womit die Kategorie Schauspieler ausgegeben wird, vermieden.
Abfrageergebnisse auf einen Namensraum beschränken[edit]
Eine weniger strenge Möglichkeit angegebene Seiten auszuwählen ist es zusätzlich Namensräume anzugeben. Standardmäßig werden Ergebnisse von Seiten aus allen Namensräumen ausgegeben. Um nun Ergebnisse aus bestimmten Namensräumen ausgeben zu lassen, müssen die Namensräume unter Verwendung von Platzhaltern angegeben werden: Bspw. [[Hilfe:+]]
, um jede Seite im Namensraum Hilfe auszugeben. Der Hauptnamensraum verfügt üblicherweise über kein Präfix, so dass hier [[:+]]
anzugeben ist, um nur die Seiten des Hauptnamensraums auszuwählen.
Disjunktionen funktionieren, wie in den vorherigen Abschnitten beschrieben, mit Hilfe des Operators „||
“. Um z. B. Seiten aus entweder dem Hauptnamensraum oder dem Benutzernamensraum zu erhalten gibt man folgende Abfrage an:
[[:+||Benutzer:+]]
Auch hier ist im Zusammenhang mit Kategorien das Zeichen „:
“ notwendig, um Verwechslungen zu vermeiden, z. B.
[[:Kategorie:+]]
Unterabfragen und Attributketten[edit]
Das Auflisten vieler Seiten zu einem Attribut ist zum einen mühselig und zum anderen schwer zu pflegen. Um bspw. alle Schauspieler auszuwählen, die in einer deutschen Stadt geboren wurden, könnte man folgende Abfrage nutzen:
[[Kategorie:Schauspieler]] [[geboren in::Berlin||Hamburg||München||Frankfurt|| … ]]
Um eine Liste all dieser deutschen Städte zu erhalten, kann man die folgende Abfrage nutzen:
[[Kategorie:Stadt]] [[liegt in::Deutschland]]
und die Ergebnisse in die erste Abfrage einfügen. Um dies zu vereinfachen, kann man die Abfragen nach den Städten als Unterabfrage in die Abfrage nach den Schauspielern einfügen, um die gewünschten Ergebnisse direkt zu erhalten. Anstatt eine festgelegte Liste von Seitennamen als Attributwert anzugeben, kann man die Unterabfrage mit <q>
und </q>
in die Bedingung zum Attribut einfügen. Im Fall des bestehenden Beispiels würde man folgende Abfrage erstellen:
[[Kategorie:Schauspieler]] [[geboren in::<q>[[Kategorie:Stadt]] [[liegt in::Deutschland]]</q>]]
Eine beliebige Anzahl dieser Unterabfragen ist möglich, wobei deren Anzahl auf einem Wiki beschränkt sein kann, um deren Systemleistung sicherzustellen.
Ein weiteres Beispiel, mit dem alle Städte abgefragt werden, die in der Europäischen Union liegen:
[[Kategorie:Stadt]] [[liegt in::<q>[[Mitglied von::Europäische Union]]</q>]]
Ergebnis:
Dieses Beispiel enthält eine Attributkette aufgrund der Kombination von [[liegt in: … ]]
sowie [[Mitglied von:: … ]]
, um eine Stadt zu ermitteln, die sich in einem Mitgliedsstaat der Europäischen Union befindet. Die Abfrage kann auch verkürzt werden:
[[Kategorie:Stadt]] [[liegt in.Mitglied von::Europäische Union]]]]
Diese Abfrage hat die selbe Bedeutung wie die vorherige, nutzt allerdings viel weniger Sonderzeichen. Es handelt sich hierbei um eine Attributkette. Allgemein werden Attributketten angegeben, indem man die einzelnen mit Punkten getrennten Attribute angibt. Für den seltenen Fall, das eine Attributbezeichnung selbst einen Punkt enthält, muss die Abfrage innerhalb der Attributangabe mit einem Leerzeichen eingeleitet werden, um eine Fehlinterpretation durch SMW zu verhindern.
Es ist nicht möglich eine Unterabfrage zu verwenden, um eine Liste von Attributen zu erhalten, die hernach direkt für die Abfrage selbst genutzt werden sollen. Siehe hierzu den Abschnitt Unterabfragen nach Attributen unten auf dieser Seite.
Vorlagen und Variablen einsetzen[edit]
Es können innerhalb einer Abfrage beliebige Vorlagen and Variablen eingesetzt werden. Ein Beispiel für die Verwendung einer Variable ist die Abfrage aller Veranstaltungen, die in der Zukunft stattfinden werden:
[[Kategorie:Veranstaltung]] [[Anfangsdatum::>>{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}]]
Dabei wird {{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}
stets durch das aktuelle Datum „2024-12-07“ ersetzt.
Eine andere hilfreiche Variable ist bspw. {{FULLPAGENAME}}
, die den Namen der aktuellen Wikiseite einschließlich des zugehörigen Namensraums ausgibt. Im Fall dieser Seite ist dies „Help:Seitenauswahl“. Auf diese Weise kann eine allgemeingültige Abfrage zur Verwendung auf vielen Wikiseiten erstellt werden. Ein Beispiel hierzu befindet sich auf der Seite Property:Population.
Weitere Informationen hierzu sind auf der Hilfeseite zu eingebetteten Abfragen beschrieben.
Abfrageergebnisse sortieren[edit]
Oftmals ist es sinnvoll die Ergebnisse einer Abfrage sortiert darzustellen, bspw. um eine Liste europäischer Städte, sortiert nach deren Bevölkerungszahl auszugeben. Die Spezialseite Spezial:Semantische Suche verfügt über eine einfache Benutzeroberfläche über die man einer Abfrage Sortieranweisungen hinzufügen kann. Unterhalb des linken Eingabefelds „Abfrage“ befindet sich die Schaltfläche „[Sortieranweisung hinzufügen]“. Nach einem Klick auf diese Schaltfläche wird ein Eingabefeld angezeigt, in das man den Namen eines zu sortierenden Attributs eingeben kann. Rechts neben diesem Feld befindet sich ein Auswahlmenü mit dem man die gewünschte Sortierreihenfolge zum zuvor eingegebenen Attribut bestimmt.
Ohne Angabe einer Sortieranweisung wird SMW versuchen, die Ergebnisse in ihrer natürlichen Sortierreihenfolge zu sortieren: Attribute mit dem Datentyp Zahl werden also numerisch sortiert, die mit dem Datentyp Zeichenkette alphabetisch sowie die mit dem Datentyp Datum chronologisch. Die Sortierreihenfolge verhält sich dabei analog der Angabe der Komparatoren „<
“ und „>
“ bei einer Abfrage. Sofern keine Sortieranweisung angegeben ist, werden die Ergebnisse alphabetisch nach deren Seitennamen sortiert.
Es ist möglich bei einer Abfrage mehr als eine Sortieranweisung anzugeben. Sofern mehrere Ergebnisse einander entsprechen und daher nicht nach der ersten Sortieranweisung sortiert werden können, wird die zweite Sortieranweisung zum Sortieren herangezogen, und so fort. Das folgende Beispiel gibt eine sortierte Liste von Städten nach der durchschnittlichen Anzahl an Regentagen je Jahr aus. Die Sortierung erfolgt dabei nach den Ländern, in denen sie sich befinden:
{{#ask: [[Kategorie:Stadt]] |?Liegt in=Land |?Durchschnittliche Regentage=Regentage/Jahr Ø |sort=Liegt in,Durchschnittliche Regentage |order=ASC,DESC}}
Das Ergebnis:
Die Sortieranweisung DESC
(absteigend) für die durchschnittliche Anzahl an Regentagen je Jahr verhindert, das Städte im selben Land in zufälliger Reihenfolge sortiert werden.
Es ist zu beachten, dass die Angabe einer Sortieranweisung auch das Ergebnis einer Abfrage an sich beeinflussen kann. Da es lediglich möglich ist Attributwerte zu sortieren, die tatsächlich zu einem Attribut auf einer Seite hinterlegt wurden, werden als Ergebnis auch nur die Seiten mit vorhandenem Attributwert angezeigt. Das Ergebnis der vorstehenden Abfrage enthält also nur Städte, zu denen ein Wert für „Regentage/Jahr Ø“ angegeben wurde, da nach ihnen sortiert werden soll. Sofern die Abfrage nicht die Angabe eines bestimmten Attributs in jedem Abfrageergebnis erfordert, wird SMW diese Bedingung selbsttätig hinzufügen. Dennoch wird SMW stets als Erstes versuchen das Attribut zu ermitteln, nach zu dem sortieren ist. Es ist auch möglich Abfrageergebnisse nach Unterattributen zu sortieren. Die folgenden Abfragebeispiele veranschaulichen die vorhandenen Sortiermöglichkeiten:
[[Kategorie:Stadt]] [[Bevölkerung::+]]
, sortiert nach „Bevölkerung“, wird in aufsteigender Reihenfolge die Bevölkerungszahl aller Städte ausgeben. Auch ohne Sortieranweisung würde sich die Ausgabe und Darstellung des Ergebnisses nicht ändern.[[Kategorie:Stadt]]
, sortiert nach „Bevölkerung“, wird ebenso in aufsteigender Reihenfolge die Bevölkerungszahl aller Städte ausgeben. Das Ergebnis kann aber durch Angabe einer Sortieranweisung geändert werden: Dadurch werden Städte, zu denen die Bevölkerungszahl nicht hinterlegt wurde, nicht mehr ausgegeben.[[Kategorie:Stadt]] [[Liegt in.Bevölkerung::+]]
, sortiert nach „Bevölkerung“, wird in aufsteigender Reihenfolge, bezogen auf das Land in dem sie sich befindet, die Bevölkerungszahl aller Städte ausgeben. Das Abfrageergebnis an sich ändert sich dabei nicht, sondern nur der Bezug des Sortierkriteriums „Bevölkerung“, das sich nun auf das Attribut in der Unterabfrage bezieht.
Sofern für ein Attribut, das zur Sortierung der Ergebnisse genutzt wird, mehr als ein Attributwert auf einer Seite hinterlegt wurde, wird diese Seite dennoch nur ein Mal in der Ergebnisliste angegeben. Die Position dieser Seite innerhalb der Sortierreihenfolge kann nicht mit SMW definiert werden und entspricht daher der Position, die gemäß einer der vorhandenen Attributwerte eingenommen wird. Im vorstehenden Beispiel würde dieses Problem auftreten, sofern für eine Stadt mehrere Bevölkerungszahlen angegeben wurden oder wenn eine Stadt eines bestimmten Namens in unterschiedlichen Ländern liegt und jeweils eine Bevölkerungszahl zu ihnen angegeben wurde. Eine solche Situation sollte vermieden werden, um dieses Problem zu vermeiden.
Abfrageergebnisse, die in Form einer Tabelle ausgegeben werden, können auch dynamisch sortiert werden, in dem man das jeweilige kleine Sortiersymbol anklickt, das sich im Spaltenkopf der Tabelle befindet. Um diese Funktion verwenden zu können, muss allerdings die Nutzung von JavaScript durch den Browser aktiviert sein. Es werden zudem nur die angezeigten Werte sortiert und das Abfrageergebnis an sich ist hierdurch nicht veränderbar. Sofern man bspw. nach den 20 bevölkerungsreichsten Städten der Welt abgefragt hat, so ist es möglich sie alphabetisch oder nach der Bevölkerungszahl auf- und absteigend zu sortieren. Es ist aber nicht möglich, das man durch Umsortieren nunmehr die 20 bevölkerungsärmsten Städte angezeigt bekommt. Die dynamische Sortierung von Tabellen versucht die gleiche Reihenfolge herzustellen, wie sie bei semantischen Abfragen erfolgen würde, gerade im Hinblick auf die naturgegebene Sortierreihenfolge von Zahlen, Datumsangaben oder Buchstaben. Dennoch, die alphabetische Sortierreihenfolge von Zeichenketten und Seiten kann leicht von der von MediaWiki verwendeten Reihenfolge abweichen. Dies liegt daran, dass gerade die Sortierung von Buchstaben internationaler Alphabete abhängig von den speziellen Einstellungen zur betreffenden Sprache selbst sind.
Auf Abfrageergebnisse verlinken[edit]
Links zu Ergebnissen semantischer Abfragen auf der Spezialseite Spezial:Semantisch Suche können mit Hilfe von eingebetteten Abfragen hergestellt werden. Es wird davon abgeraten direkte Links auf die Spezialseite „Semantische Suche“ zu setzen, da diese sehr lang werden können und eine spezielle Kodierung aufweisen, was zu unvorhergesehenen Problemen führen kann.
Ein Verständnis der Einzelheiten zu Erstellung von Links durch SMW ist nicht notwendig, um SMW nutzen zu können. Dahingegen sollten Entwickler von Softwareerweiterungen die auf die Spezialseite „Semantische Suche“ verlinken, die internen Funktionen von SMW zur Erstellung von Links verstehen und nutzen.
Nicht realisierbare Möglichkeiten[edit]
Verkettung von Abfragen[edit]
Es ist nicht möglich eine Unterabfrage zum Ermitteln einer Liste von Attributwerten zu nutzen und diese dann anschließend direkt in einer Abfrage einzusetzen. Man kann lediglich eine Abfrage zum Ermitteln einer Liste von Attributwerten erstellen und die Ergebnisse anschließend manuell in eine weitere Abfrage kopieren. Alternativ hierzu ist die Nutzung des Ergebnisformats template (Vorlage) möglich, um die dort enthaltenen Werte direkt in eine andere Abfrage zu übergeben.
Abfragen mit Spezialattributen[edit]
Momentan werden Abfragen nach Attributwerten von in SMW originär vorhandenen Spezialattributen, wie bspw. „Datentyp“, „Erlaubt Wert“ oder „Gleichwertige URI“, nicht unterstützt.
Komparatoren bei Kategorien oder Konzepten[edit]
Es ist nicht möglich Komparatoren im Zusammenhang mit Kategorien oder Konzepten zu nutzen. Eine Abfrage wie bspw. {{#ask: [[Kategorie:!Stadt]] }}
mit der alle Seiten abgefragt werden sollen, die sich nicht in der Kategorie „Stadt“ befinden, ist daher nicht möglich.