Help:Attribute und Datentypen

Attribute und Datentypen sind die zentralen Komponenten, mit denen semantische Daten in Semantic MediaWiki erfasst werden. Diese Hilfseite dokumentiert die hierzu vorhandenen Informationen.

Attribute
Attribute sind im Prinzip Kategorien für Werte in Wiki-Seiten. Sie werden nach einem einfachen Schema erstellt, ähnlich dem Syntax für Links in MediaWiki:


 *   Attributname:: Attributwert  .

Diese Anweisung weist dem angegebenen Attribut Attributname für diesen Artikel den Wert Attributwert zu und zeigt denselben Wert an der entsprechenden Stelle auf der Seite an:


 * Attributwert.

Bestehende Links können direkt mit Attributen erweitert werden. Bei anderen Datentypen (Text, Zahlen, Kalenderdaten usw.) ist ein zusätzlicher Bearbeitungsschritt nötig, bevor das gewünschte Ergebnis erzielt werden kann.

Semantische Links
Betrachten wir zum Einstieg eine abgewandelte Version des Einleitungssatzes vom Wikipedia-Artikel über Berlin:


 * Berlin ist Bundeshauptstadt und Regierungssitz von Deutschland.

Beschränken wir uns zunächst auf die wohl wichtigste Information:


 * Berlin ist die Hauptstadt von Deutschland.

Um diese Information einem Computerprogramm zugänglich zu machen, müssen wir den Link


 *  Deutschland 

mit Hilfe einer semantischen Annotation dahingehend markieren, dass es sich bei dem verlinkten Artikel um jenen Staat handelt, von dem Berlin die Hauptstadt ist. In SMW erreichen wir dies ganz einfach, indem wir innerhalb der eckigen Klammern einen geeigneten Attributnamen, gefolgt von der Zeichenfolge :: an den Anfang setzen:


 *   Hauptstadt von:: Deutschland  .

Trotz semantischer Annotation wird der Text nach wie vor ganz gewöhnlich als Wiki-Link zum Artikel Deutschland angezeigt. Hinzugekommen ist lediglich im Hintergrund die Klassifikation, dass Deutschland den Wert zum Attribut Hauptstadt von bezüglich des Artikels Berlin darstellt.

Möchten wir auch die zweite Information aus obenstehender Berlin-Einleitung zugänglich machen, können wir die obere Vorgehensweise wiederholen. Das Ergebnis wäre dann:


 *   Regierungssitz von:: Hauptstadt von::Deutschland  .

Schließlich besteht unabhängig von SMW weiterhin die Möglichkeit, einen alternativen Linktext festzulegen:


 *  Bundesrepublik Deutschland  </tt>.

Attribute benennen und wiederverwenden
Der Attributname ist wie bei Kategorien frei wählbar, sollte jedoch aussagekräftig und unter Berücksichtigung bereits verwendeter Attribute gewählt werden. Die Wiederverwendung von Attributen wird dadurch erleichtert, dass jedes verwendete Attribut – ähnlich wie eine Kategorie – automatisch eine eigene Seite im Namensraum Property (bzw. Attribut bei dt. Installationen) erhält, auf der alle Artikel aufgelistet werden, die das Attribut verwenden. Diese Attributseiten sind über Property:Attributname zu erreichen und können auch über die MediaWiki-Suche unter Special:Search gefunden werden. Darüber hinaus ist eine Liste aller verwendeten Attribute über die Seite Special:Properties zugänglich.

Attributseiten sind standardmäßig leer. Es ist jedoch dringend zu empfehlen, an der dortigen Stelle zu beschreiben, welchem Zweck das Attribut dient und wie es richtig angewendet wird.

Beispiele

 * Link mit Attribut


 *   Attributname:: Linkziel  </tt>


 * Link mit Linktext


 *  Linktext   </tt>


 * Link ohne Ausgabe


 *     </tt> (Leerzeichen als Linktext)


 * Link mit Leerzeichen als Ausgabe


 *  &amp;nbsp;   </tt> (HTML-Entity als Linktext)


 * Link mit zwei Attributen


 *   Attribut1:: Attribut2::Linkziel  </tt>


 * Unsemantischer Link mit Zeichenfolge ::


 *   : C++ :: Operator  </tt>

Semantischer Text
Viele nützliche Informationen in Wiki-Artikeln liegen nicht in Form von Links vor. So ist im Wikipedia-Artikel über Berlin etwa die Einwohnerzahl angegeben. Um diese Information Computerprogrammen zugänglich zu machen, müssen wir wiederum den Text


 * 3.443.570</tt>

mit einer semantischen Annotation dahingehend markieren, dass es sich bei dem Wert um die Einwohnerzahl handelt. Wir erreichen dies, indem wir den Text zunächst in einen Link umwandeln und anschließend dem im vorherigen Abschnitt beschriebenen Schema folgen:


 *   Einwohnerzahl:: 3.443.570    .</tt>

Die Sache hat jedoch einen kleinen Haken: Zum einen wird die Einwohnerzahl fortan als Link zu einer 3.396.990-Seite angezeigt, was weder schön anzusehen ist noch wirklich Sinn ergibt. Zum anderen werden wir früher oder später auf ein Problem stoßen, wenn wir versuchen, die semantischen Daten zu nutzen und eine Anzahl von Städten nach ihrer Einwohnerzahl sortiert auszugeben.

Wir müssen Semantic MediaWiki daher wissen lassen, dass das Attribut Einwohnerzahl</tt> eine Zahl als Wert hat, die weder als Link dargestellt noch alphabetisch sortiert werden soll. Dies erreichen wir, indem wir dem Attribut einen Datentyp zuweisen.

Datentypen
Datentypen sind entscheidend bei der Auswertung von Attributen. Sie legen fest, wie Computerprogramme mit Attributwerten umgehen (etwa hinsichtlich Reihenfolge und Formatierung in Suchergebnissen), und sind ebenso dafür verantwortlich, dass äquivalente Werte erkannt werden können (etwa 1532 = 1.532 = 1,532e3).

Die Festlegung eines Datentyps für ein Attribut erfolgt auf der entsprechenden Attributseite. Dort kommt das Spezialattribut Datentyp</tt> zur Anwendung, das wie ein normales Attribut verwendet wird und als Wert den Namen des gewünschten Datentyps enthält.

Für die wichtigsten Zwecke hält SMW bereits vordefinierte Datentypen bereit (siehe Liste der Datentypen). So bietet sich für unser Attribut Einwohnerzahl</tt> beispielsweise der Datentyp Zahl an.

Folglich legen wir auf der Seite Attribut:Einwohnerzahl diesen Datentyp folgendermaßen fest:


 *  Datentyp::Zahl. </tt>

Der Grund, wieso wir für das weiter oben verwendete Attribut Hauptstadt von</tt> keinen Datentyp angeben mussten, ist der standardmäßige Datentyp Page, der als Link dargestellt wird. Nichtsdestotrotz sollte für alle Attribute der Datentyp explizit festgelegt werden, um Unklarheiten sowie die spätere Zuweisung eines nicht gewünschten Datentyps zu vermeiden.

Übrigens hat auch jeder Datentyp seine eigene Seite – und zwar im Namensraum Type (bzw. Datentyp bei dt. Installationen). So finden wir in unserem Beispiel etwa auf der Seite des Datentyps „Zahl“ alle Attribute, die den Datentyp Zahl verwenden – einschließlich dem Attribut Einwohnerzahl</tt>.

Beispiele
Für Attribute anderer Datentypen gilt das gleiche Schema wie für semantische Links:


 * Zahl mit Attribut


 *   Attributname:: 1.234.567    </tt>
 * Ausgabe: <tt>1.234.567</tt>


 * Zahl mit Alternativtext


 * <tt> etwa eine Million   </tt>
 * Ausgabe: <tt>etwa eine Million</tt>


 * Datentyp auf der Attributseite festlegen


 * <tt> Datentyp::Datentypbezeichnung  </tt>


 * Anzeige eines Weblinks mit einem Attribut des Datentyps „URL“


 * <tt> Unsere Website können Sie unter Website::http://beispieldomain.de aufrufen. </tt>
 * Ausgabe: Unsere Website können Sie unter http://beispieldomain.de aufrufen.


 * Anzeige einer E-Mail-Adresse mit einem Attribut des Datentyps „E-Mail“


 * <tt> Sie können Hans unter der E-Mail-Adresse E-Mail-Adresse::hans@beispieldomain.de erreichen. </tt>
 * Ausgabe: Sie können Hans unter der E-Mail-Adresse [mailto:hans@beispieldomain.de hans@beispieldomain.de] erreichen.

Von dieser (letzten) Vorgehensweise wird abgeraten; stattdessen sollten semantische Vorlagen verwendet werden.

Liste der Datentypen
Mit Hilfe verschiedener Datentypen können Attribute zur Beschreibung sehr unterschiedlicher Werte verwendet werden. Eine Liste der verfügbaren Datentypen ist auch auf der Spezialseite Spezial:Datentypen einsehbar. Die verfügbaren Datentypen sind:

Aufzählungen und Erlaubte Werte
SMW stellt keinen Datentyp für Aufzählungen bereit, also einen Datentyp, der eine begrenzte Anzahl expliziter Werte erlaubt (etwa ja/nein/vielleicht). Stattdessen kann das Spezialattribut „Erlaubt Wert“ (Attribut:Erlaubt Wert) verwendet werden, um für ein Attribut beliebigen Datentyps die erlaubten Werte anzugeben.

Einheiten
Der Datentyp number erlaubt die Verwendung von Maßeinheiten hinter dem Zahlenwert, um Werte zu unterscheiden (zum Beispiel: 30,3 mpg vs. 47 km/Liter), kann jedoch keine Konvertierungen zwischen den Einheiten vornehmen.

Um automatische Konvertierungen und mehrere Einheiten zu unterstützen, können jedoch benutzerdefinierte Datentypen mit eigenen Maßeinheiten erstellt werden. Diese wandeln Werte automatisch um, sodass Benutzer in Artikeln ihre bevorzugte Maßeinheit als Wert verwenden und trotzdem mit denen aus anderen Artikeln vergleichen und in einer Semantischen Abfrage gemeinsam anfordern können.

Spezialattribute
Spezialattribute haben jeweils eine ureigene, vordefinierte Funktion und werden nicht wie normale Attribute ausgewertet. Neben den bereits erwähnten Property:Has type und Property:Allows value gibt es noch weitere Spezialattribute (siehe Spezialattribute). Die Namen dieser Attribute können logischerweise nicht für eigene Attribute, die Spezialattribute selbst jedoch seit SMW 1.4.0 in Abfragen wie normale Attribute verwendet werden.

Wertepaare mit #set
An Stelle des oben beschriebenen Schemas mit eckigen Klammern können semantische Daten auch unter Verwendung der stillen <tt>#set</tt>-Parser-Funktion festgelegt werden. Diese Funktion nimmt Paare von Attributnamen und Werten auf und speichert sie semantisch, erstellt jedoch keinerlei Ausgabe auf der Seite. Ein denkbarer Aufruf wäre zum Beispiel:

Der <tt>#set</tt>-Aufruf ist besonders hilfreich, wenn eine Zeichenkette oder ein Text gespeichert werden soll, der eckige Klammern enthält (etwa Wiki-Links). Dies würde nach dem herkömmlichen SMW-Schema nicht ohne Weiteres funktionieren.

Terminserien mit #set_recurring_event
Einen weiteren komplexen Datentyp stellen Terminserien dar, also Termine, die sich nach einer vorgegebenen Regel wiederholen wie etwa wöchentliche Treffen. Wir können solche Terminserien mit der <tt>#set_recurring_event</tt>-Parserfunktion festlegen, die – wie die <tt>#set</tt>-Funktion – keine Ausgabe erzeugt. Ein Beispiel wäre:

Siehe Help:Recurring events (en) für weitere Informationen und Beispiele.

Handhabung in früheren Versionen
In früheren Versionen von SMW waren Attribute vom Typ Seite als Relationen bekannt und zwar nur solche, die die Zeichenfolge <tt>::</tt> als Separator zwischen Attributname und Linktext verwendeten. Alle übrigen Attribute (Zahlen, Zeichenketten, usw.) waren als Attribute bekannt und mussten die Zeichenfolge <tt>:=</tt> als Separator verwenden.

Siehe Upgrading from SMW 0.7 to SMW 1.0 (en) für sonstige Änderungen in SMW 1.0. Siehe semweb:Help:Annotation (SMW0.7) (en) für bestehende Installationen älterer Versionen von SMW.