Hilfe:Datentyp „Verbund“

From Linux Web Expert

Verbund
Wird für das Speichern von Werteverbünden unterschiedlicher Datentypen, in vorgegebenen Reihenfolge, genutzt
Further information
Provided by: Semantic MediaWiki
Since version: 1.5.0
Until version:
Datatype ID: _rec
In this wiki: Verbund
Table of Contents

Der Datentyp Verbund wird Attributen zugeordnet, mit denen eine kurze Liste von Werten unterschiedlicher Datentypen gespeichert werden soll. Für jedes Attribut, das diesen Datentyp nutzt, muss die Reihenfolge der einzelnen enthaltenen Komponenten anhand von deren jeweiligen Datentyp fest deklariert werden. Dies erfolgt mit dem Spezialattribut „Hat Komponenten“. Die einzelnen Komponenten werden dabei mit einem Semikolon („;“) voneinander getrennt.

Deklaration und Nutzung

Für ein Attribut des Datentyps Verbund wird zunächst der Datentyp [[Datentyp::Verbund]] auf der Seite des Attributs angegeben. Danach werden die Datentypen der einzelnen Komponenten mit dem Spezialattribut „Hat Komponenten“ angegeben. Beispielsweise wird ein Verbund aus den Datentypen Datum, Seite sowie Zahl wie folgt hinterlegt:

[[Hat Komponenten::Datum; Seite; Zahl]]

Auf diese Weise kann eine beliebige Liste an Datentypen als Verbund festgelegt werden. Es wird allerdings empfohlen die Anzahl der Komponenten eines Verbunds auf fünf zu beschränken, obgleich auch mehr als fünf Komponenten denkbar und möglich sind. Verbünde mit mehr als 50 Komponenten sind aufgrund technischer Einschränkungen nicht mehr handhabbar und werden Fehler erzeugen. Allerdings sind allein schon aus Gründen der Nutzerfreundlichkeit wesentlich kürzere Verbünde, aufgrund ihrer Unübersichtlichkeit für den Nutzer, nicht empfehlenswert. Bei der Nutzung eines Attributs des Datentyps Verbund werden die Werte der einzelnen Komponenten ebenfalls durch ein Semikolon („;“) getrennt eingegeben. Es wird bspw. ein Attribut mit Namen Beispielattribut, das wie im vorherigen Abschnitt beschrieben, deklariert wurde, wie folgt eingegeben:

[[Beispielattribut::31.08.2011; Beispielseite; 1234]]

Beim Eingeben eines Attributs des Datentyps Verbund können auch Komponenten offengelassen werden, in dem man zu ihnen entweder nichts angibt oder ein Fragezeichen („?“) angibt:

[[Beispielattribut::31.08.2011; ?; 1234]]

oder

[[Beispielattribut::31.08.2011;; 1234]]

Werte für Komponenten, die sich am Ende des Attributs befinden, können auch ganz weggelassen werden:

[[Beispielattribut::31.08.2011; Beispielseite]]

Für den Fall, dass der angegebene Wert einer Komponente aufgrund von deren Datentyp nicht zulässig ist, wird Semantic MediaWiki versuchen diese Komponente als offengelassen zu interpretieren und den angegebenen Wert der nächstfolgenden Komponente zuzuordnen:

[[Beispielattribut::Beispielseite; 1234]]

wird folglich als

[[Beispielattribut::?; Beispielseite; 1234]]

interpretiert werden.

Beispiel

Eine typische Einsatzmöglichkeit für den Datentyp Menge wäre die Speicherung von Informationen zu Bundeskanzlern Deutschlands auf einer Wikiseite über Deutschland. Beispielsweise könnte man [[Hat Bundeskanzler::Konrad Adenauer]] angeben, um mitzuteilen, dass er einer der Bundeskanzler war. Auf diese Weise würde man aber nichts über seine Amtszeit erfahren. Zudem hätte man keine Möglichkeit zu ermitteln, wer aktuell Bundeskanzler ist.

Die Tatsache, das Konrad Adenauer der erste männliche Bundeskanzler Deutschlands war und von 1949 bis 1963 sein Amt ausgeübt hat, enthält etliche Informationsbestandteile, die zueinander gehören. Hierzu die einzelnen Attribute [[Hat Bundeskanzler::Konrad Adenauer]], [[Im Amt seit::1949]], [[Im Amt bis::1963]] und [[Hat Geschlecht::männlich]] anzugeben, würde das Problem auch noch nicht lösen, da die Seite Angaben zu etlichen Bundeskanzlern enthält und man nicht entscheiden kann, welche Daten nun direkt zusammengehörig sind.

Eine Lösung hierfür ist die Deklaration des Attributs Hat Bundeskanzler mit dem Datentyp Verbund und den Komponenten [[Hat Komponenten::Seite; Datum; Datum; Zeichenkette]]. Nun kann man auf der Seite zu Deutschland folgende Angabe machen: [[Hat Bundeskanzler::Konrad Adenauer; 1949; 1963; männlich]], die nichts anderes als eine logische Gruppierung der einzelnen vorher beziehungslosen Informationen ist. Sofern einige Informationen unbekannt oder noch nicht ermittelbar sind, können sie, wie oben erläutert, weggelassen werden. Bezüglich Bundeskanzlerin Angela Merkel würde die Angabe wie folgt gemacht werden: [[Hat Bundeskanzler::Angela Merkel; 2005; ?; weiblich]], da das Ende ihrer Amtszeit noch nicht feststeht.

Eine andere Lösung dieses Problems wäre die Erstellung einzelner Seiten für jeden Bundeskanzler, auf der die betreffenden Informationen einzeln hinterlegt werden. Hernach könnte man diese einzelnen Informationen mit Hilfe einer eingebetteten Abfrage auf der Seite zu Deutschland darstellen.

Semantische Suche

Attribute des Datentyps Verbund können bei der semantischen Suche ähnlich verwendet werden, wie bei alle anderen Attributen. Siehe hierzu die Hilfeseite Semantische Suche. Wie bei jedem anderen Attribut, kann also auch hier das Pluszeichen („+“) als Platzhalter zur Auswahl aller Seiten mit einem hierzu hinterlegten Wert, verwendet werden. Ein Beispiel hierfür wäre die eingebettete Abfrage {{#ask: [[Anstellung::+]] }}. Um alle Seiten zu ermittelt, die über einen bestimmten Wert zu irgendeiner Komponente dieses Attributs von Datentyp Verbund verfügen, müssen lediglich diese Werte, durch Semikola getrennt, angegeben werden. Sofern beliebige Werte, einschließlich nicht vorhandener Werte, zu einer der Komponenten ausgegeben werden sollen, wird das Fragezeichen („?“) genutzt.

Die zu einer Komponente vermerkten Werte werden bei einer eingebetteten Abfrage entsprechend ihres jeweiligen Datentyps angegeben. Dies bedeutet, dass im Falle der meisten Datentypen Komparatoren wie z. B. „!“ für ungleich oder „<<“ für kleiner als bei jeder Komponente eingesetzt werden können. Mit der Abfrage

{{#ask: [[Anstellung:: ?; !Professur; <Mai 1973; ?]] }}

werden bspw. alle Werte des Attributs Anstellung zu jeder Hochschule angegeben, bei denen die Tätigkeit nicht einer Professur entspricht und diese zudem vor dem Mai 1973 begann und das Anstellungsende beliebig ist.

Beim Anzeigen der Werte von Attributen des Typs Verbund, ist es möglich den Ausgabeparameter index zu nutzen, um bestimmte Komponenten des Verbunds anzuzeigen:

{{#ask: [[Deutschland]]
| ?Hat Bundeskanzler
| ?Hat Bundeskanzler#Name       |+index=1
| ?Hat Bundeskanzler#Anfang     |+index=2
| ?Hat Bundeskanzler#Ende       |+index=3
| ?Hat Bundeskanzler#Geschlecht |+index=4
}}

Es werden so alle Bundeskanzler Deutschlands in einer Tabelle ausgegeben. Die erste Spalte zeigt den gesamten Inhalt des Attributs vom Typ Verbund, die zweite Spalte zeigt lediglich den Namen, die dritte den Anfang der Amtszeit, die vierte das Ende der Amtszeit sowie die fünfte Spalte das Geschlecht.

Es ist in diesem Zusammenhang anzumerken, dass die Seite „Deutschland“ das einzige Ergebnis dieser Abfrage ist. Dies bedeutet, dass alle für das Attribut Hat Bundeskanzler hinterlegten Werte jeweils in einer Zeile angegeben werden und nicht über mehrere Zeilen verteilt. Letzteres ist bei Attributen des Datentyps Verbund nicht möglich.

Bei derartigen Abfragen kann es auch zu unerwarteten Abfrageergebnissen kommen. Während sich die Abfragebeschränkungen auf die Auswahl von zutreffenden Wikiseiten beschränken, z. B.

{{#ask: [[Anstellung:: ?; !Professur; <Mai 1973; ?]] }}

werden als Ergebnis alle Anstellungen ausgeben, die auf diesen Seiten hinterlegt sind, selbst wenn nicht alle weiteren Ausgabeanweisungen erfüllt werden. Dies ist auf die Art und Weise zurückzuführen, wie SMW mit Abfragen von Attributen des Datentyps Verbund umgeht. Zunächst werden die Abfragebeschränkungen zur Ermittlung der betreffenden Seiten angewendet und in einem zweiten Schritt werden lediglich alle Werte der betroffenen Attribute ausgegeben, gleich ob sie die Ausgabeanweisungen erfüllen oder nicht.

Einschränkungen

  • Das Spezialattribut Erlaubt Wert kann nicht genutzt werden, um den Umfang der möglichen Eingabewerte zu einer Komponente vorzugeben.
  • Das Spezialattribut Einheiten kann nicht genutzt werden, um die Ausgabe einer Komponente zu steuern.
  • Die Anzeige der Wert kann nicht individuell festgelegt werden. Sie werden stets in Form einer kommagetrennten Liste ausgegeben werden.
  • Komponenten dieses Datentyps können nicht zusammen mit besonderen Ergebnisformaten, wie bspw. timeline oder map genutzt werden.
  • Attribute dieses Datentyps können nicht verschachtelt werden und daher nur aus einfachen Datentypen bestehen.

Alternativen

Sofern eine Zuordnung zwischen einer Seite und mehreren Attributwerten vorliegt, sollte eine der beiden im Folgenden beschriebenen Alternativen zu diesem Datentyp genutzt werden. Dies deshalb, da so nach einzelnen Attributen abgefragt werden kann, während man zudem die weiteren Attribute anzeigen lassen kann. Es handelt sich also um Zuordnungen ohne eine gesonderte Seite.

Sofern hingegen lediglich eine direkte Zuordnung zwischen Seite und Attributwert vorliegt (sichergestellt durch eine Formular-Vorlagen-Kombination), können beide Herangehensweisen genutzt werden. In diesem Fall sind allerdings Attribute des Datentyps Verbund einfacher handhabbar.

Parserfunktion #subobject

Siehe die Hilfeseite Parserfunktion subobject bezüglich einer Beschreibung dieser Alternative, die durch SMW seit der Version 1.7.0 direkt bereitgestellt wird.

Parserfunktion #set_internal

Diese Alternative wird von der Softwareerweiterung Semantic Internal Objects bereitgestellt.

Beispiel „Musterstadt“

In dieser Stadt gibt es mehrere Museen:

  • {{Museum|Museum für moderne Kunst|1000|1800}} und
  • {{Museum|Naturhistorisches Museum|0930|1730}}.

Mit der Vorlage Museum werden die folgenden internen Datenobjekte gesetzt:

{{#set_internal:Ist Museum in
| Hat Namen={{{1}}}
| Hat Öffnungszeit={{{2|}}}
| Hat Schließzeit={{{3|}}}
}}

Zudem werden weitere Informationen auf der Seite angezeigt.

Nunmehr kann man nach Museen in einer Stadt abfragen und deren Besuchszeiten anzeigen lassen.

{{#ask: [[Ist Museum in::Musterstadt]] [[Hat Name::~*Natur*]]
| ?Hat Namen=Museum
| ?Hat Öffnungszeit=öffnet
| ?Hat Schließzeit=schließt
| mainlabel=-
}}