Help:Eigene Maßeinheiten

Dieses Hilfeseite beschreibt die Möglichkeiten, wie die Anzeige und Umrechnung von Maßeinheiten gesteuert werden kann. Maßeinheiten können bei Attributen vom Datentyp „Maß“ verwendet werden und ermöglichen flexiblere Annotationen. Jeder Benutzer kann dadurch Daten in seiner bevorzugten Maßeinheit anzeigen und eingeben, ohne dabei die allgemeine Verständlichkeit der Informationen zu beeinträchtigen. Zum Beispiel geben manche Menschen die Leistung eines Verbrennungsmotors lieber in „PS“ als in „kW“ an. In anderen Fällen ist es wiederum weniger sinnvoll die Leistung in „kW“ anzugeben, weil diese beispielsweise nur mehreren „W“ (Watt) entspricht.

Eigene Maßeinheiten und deren Umrechnungen
SMW bietet bereits mehrere voreingestellte Datentypen, die mit Maßeinheiten umgehen können (z. B. den Datentyp Temperatur). Es können jedoch auch neue hinzugefügt werden, was allerdings nicht den Benutzern selbst möglich ist. Datentypen, die Maßeinheiten unterstützen, können begleitend zum Attributwert ein Einheitenzeichen aufnehmen, Umrechnungen vornehmen und die Werte dann in den verschiedenen Maßeinheiten anzeigen. Ein Beispiel hierfür ist die Faktenanzeige auf der Seite Berlin, in der die Fläche Berlins in verschiedenen Flächeneinheiten (km², sqmi) angegeben ist.

Um eine solche Funktionalität bereitstellen zu können, muss SMW wissen, wie Werte von der einen Maßeinheit in die andere umgerechnet werden. Dies ist in den meisten Fällen eine eher einfache Angelegenheit, während die Berechnung in manchen Fällen hingegen wesentlich komplexer ausfällt. Es werden daher zwei Fälle unterschieden:
 * 1) Die Umrechnung zwischen den gewünschten Maßeinheiten ist proportional, das heißt der Wert in der einen Maßeinheit muss lediglich mit einem konstanten Umrechnungsfaktor multipliziert werden, um den entsprechenden Wert in der anderen Maßeinheit zu erhalten. Ein Beispiel hierfür ist die Umrechnung zwischen Kilometern und Meilen.
 * 2) Die Umrechnung zwischen den gewünschten Maßeinheiten ist nicht proportional wodurch komplexere Berechnungen erforderlich sind. Dies trifft etwa bei der Umrechnung zwischen Grad Celsius und Grad Fahrenheit zu, bei der sowohl eine Addition als auch eine Multiplikation notwendig ist.

Für alle Maßeinheiten mit proportionaler Umrechnung (Fall 1) kann der Datentyp „Maß“ genutzt werden. Der direkt folgende Abschnitt Proportionale Maßeinheiten erläutert, wie hierbei vorzugehen ist. Im weiteren Abschnitt Nicht-proportionale Maßeinheiten wird dargestellt, wie Maßeinheiten mit nicht proportionalen Umrechnungen (Fall 2) unterstützt werden.

Proportionale Maßeinheiten
SMW stellt den Datentyp „Maß“ bereit, der Attributen zugeordnet werden kann, deren Werte aus einer Zahl und einer zugehörigen Einheit bestehen. Eine Einheit kann dabei eine ausschließlich mit einem Buchstaben anfangende Bezeichnung sein, wie bspw. „Meilen“, „km²“ oder „m/s“.

Um eine Einheit, bzw. eine alternative Schreibweise derselben zur Verfügung zu stellen, muss sie zunächst auf der Seite des betreffenden Attributs, wie weiter unten beschrieben, festgelegt werden. Es können lediglich vorher auf den Attributseiten festgelegte Einheiten genutzt werden. Alle anderen Angaben auf Wikiseiten werden als Eingabefehler betrachtet und automatisch dem Spezialattribut „Hat unpassenden Wert für“ zugewiesen. Ohne die Festlegung sind Attribute des Datentyps „Maß“ quasi nutzlos. Der Vorteil dieses strikten Systems besteht darin, dass SMW die Attributwerte untereinander vergleichen kann, selbst wenn unterschiedliche Einheiten beim Angeben verwendet wurden. Jeder Eingabewert definiert eindeutig ein „Maß“, ähnlich dem Betrag einer Zeiteinheit oder einer Entfernung, die auch als solche verstanden wird, gleich wie er eingegeben wurde. Der Attributwert ist somit tatsächlich ein Wert und wird als solcher gespeichert. Er stellt keinen bestimmten Text dar, der dazu genutzt wurde ihn auf einer Seite anzugeben. Dieser sowie die ursprüngliche Einheit werden dabei nicht gespeichert. Dieses Verhalten trifft bswp. auch auf den Datentyp „Zahl“ zu. Ob eine Zahl nun als „2“ oder „2,0“ erfasst wurde ist unerheblich, da im Hintergrund stets die selbe Zahl gespeichert wird.

Um eigene Maßeinheiten nutzen zu können, muss man zunächst ein passendes Attribut erstellen. Zunächst ist es ratsam auf der Spezialseite „Attribute“ zu überprüfen, ob nicht bereits ein solches Attribut angelegt wurde und somit vorhanden ist. Sofern dies nicht der Fall ist, erstellt man hierzu eine neue Seite im Namensraum „Attribut“. Beispielsweise kann man das Attribut „Hat Leistung“ erstellen, um Werte für die physikalisch Leistung hinterlegen zu können. Auf dieser neuen Seite „Attribut:Hat Leistung“ ergänzt man zunächst eine kurze Erläuterung bezüglich Zweck und Einsatzmöglichkeit des Attributs: „Mit diesem Attribut werden Werte zu physikalischer Leistung (Energie pro Zeit) hinterlegt. Die Einheit der physikalischen Leistung ist das Watt.“ Dieser kurze Text ermöglicht zudem, dass die Seite bei einer Stichwortsuche als Ergebnis angegeben werden kann. Nunmehr ergänzt man unter Verwendung des Spezialattributs „Datentyp“ den Datentyp „Maß“: „Dies ist ein Attribut des Datentyps Maß.“ Als nächstes gibt man mit Hilfe des Spezialattributs „Entspricht“ die Einheiten an, die von dem Attribut unterstützt werden sollen. Die Haupteinheit des Attributs könnte nun mit Entspricht::1 W, Watt ergänzt werden. Mit dem Wert „1 W“ wird somit Folgendes festgelegt:
 * 1) Der Datentyp versteht die Einheit „W“ und
 * 2) die Einheit „W“ ist die Haupteinheit (festgelegt durch den Umrechnungsfaktor „1“).

Die Haupteinheit ist die Standardeinheit in der die Attributwerte dieses Datentyps von SMW im Wiki dargestellt werden. Es ist daher auch diejenige, die angenommen wird, sofern beim Hinterlegen von Werten auf Wikiseiten keine Einheit angegeben wird. Es können zudem problemlos weitere Einheiten festgelegt werden: Entspricht::0,001 kW Entspricht::0,0013410220 PS. Hierdurch erkennt das Attribut gleichsam die Maßeinheiten „kW“ und „PS“. Er versteht anhand der angegebenen Umrechnungsfaktoren, dass ein Teil der Haupteinheit „W“ sowohl 0,001 „kW“ als auch 0,0013410220 „PS“ entspricht. Auf diese Weise kann die Unterstützung beliebig weiterer Maßeinheiten gewährleistet werden, solange die Beziehung zur Haupteinheit proportional ist und sich somit nach diesem Schema beschreiben lässt.

In den meisten Fällen gibt es mehrere gängige Arten, die Maßeinheit zu benennen und somit zu erfassen. Man kann es den Benutzern problemlos ermöglichen, bspw. statt „W“ ebenso „Watt“ zu verwenden. Hierzu legt man für jede dieser weiteren Maßeinheiten eine „Entspricht“-Angabe (Umrechnungsfaktor) auf der Attributseite fest. Einfacher geht dies jedoch, indem mit Hilfe eines Kommas als Separator hinter dem bestehenden Wert „1 W“ die weiteren Maßeinheiten hinzugefügt werden. Die Angabe auf der Attributseite lautet daher: Entspricht::1 W, Watt Entspricht::0,0013410220 PS, Pferdestärke, Pferdestärken. Im vorliegenden Fall ist die Haupteinheit, die allererste mit der „Entspricht“-Angabe „1“ (Umrechnungsfaktor „1“) festgelegte Maßeinheit, also „W“. Alle mit den „Entspricht“-Angaben (Umrechnungsfaktoren) hinzugefügten Maßeinheiten werden vom Attribut automatisch verstanden und im Wiki als Umrechnungen angezeigt. Die Bezeichnung der Maßeinheit wird dabei nicht doppelt dargestellt, also nicht „W“ und „Watt“, sondern nur „W“.

Softwareintern werden alle Werte in die Haupteinheit umgerechnet und in dieser Form auch im RDF-Export angezeigt. Wertangaben ohne Maßeinheit werden stets als Wertangabe in der Haupteinheit interpretiert. Von diesem Blickwinkel aus betrachtet handelt es sich bei der Einheitenumrechnung schlicht um eine Vorverarbeitung der Benutzerangaben sowie deren Nachbearbeitung für die Anzeige. Dadurch ist es für die Benutzer einfacher im Wiki mit Maßeinheiten zu arbeiten. Die Anzeige der Maßeinheiten innerhalb des Wikis ist im hohen Maße anpassbar und muss nicht gezwungenermaßen die Haupteinheit enthalten (siehe hierzu den weiter unten folgenden Abschnitt Anzeige der Maßeinheiten anpassen).


 * Sofern etliche Attribute die selben Maßeinheiten verwenden, wie bspw. das Attribut „Höhe“ oder „Breite“, ist es vorteilhaft die Festlegung der Maßeinheiten innerhalb einer Vorlage vorzunehmen, die hernach auf allen betreffenden Attributseiten eingebunden wird, die sie verwenden sollen. Auf diese Weise stellt man sicher, dass die Attribute, die die selbe Menge darstellen auch die selben Maßeinheiten nutzen.
 * Die Maßeinheiten müssen stets im Anschluss an den Attributwerte angegeben werden, z. B. „100 EUR“. Die Angabe als Präfix, bspw. „EUR 100“ ist nicht möglich.
 * Die Maßeinheiten müssen stets im Anschluss an den Attributwerte angegeben werden, z. B. „100 EUR“. Die Angabe als Präfix, bspw. „EUR 100“ ist nicht möglich.

Nicht-proportionale Maßeinheiten
Mit dem Datentyp „Maß“ kann man lediglich Maßeinheiten mit einem proportionalen Umrechnungsfaktor, also bei einer Multiplikation nutzen. Es ist daher nicht möglich unterschiedliche Berechnungsgrundlagen für unterschiedliche Maßeinheiten zu nutzen oder mit logarithmischen Skalen zu arbeiten. Insofern kann keine entsprechende Umrechnung, die nicht nur eine Multiplikation sondern auch eine Addition enthält, für ein Attribut festgelegt werden. Dies ist bspw. bei der Umrechnung von Werten von Grad Celsius in Grad Fahrenheit der Fall. Im Fall von Temperaturen stellt SMW zwar bereits den voreingestellten Datentyp „Temperatur“ zur Verfügung, für andere Anwendungsfälle ist dies jedoch nicht der Fall.

SMW sieht keine Möglichkeit vor, eigene nicht-proportionale Maßeinheiten innerhalb des Wikis zu beschreiben. Eine provisorische Lösung hierfür besteht darin, den Datentyp „Zahl“ zu verwenden und dabei keine Einheitenzeichen zu verwenden. Diese müssen auf den Wikiseiten selbst hinzugefügt werden. Dadurch entfällt im Zusammenhang mit der Unterstützung von Maßeinheiten die bequeme Vor- und Nachverarbeitung, alle anderen Funktionalitäten, wie z. B. die Abfragemöglichkeit oder der Datenexport, stehen indes nach wie vor zur Verfügung. Zudem kann man Parserfunktionen enthaltende Vorlagen nutzen, die für Einheitenumrechnungen verwendet werden können. Gewöhnlich führt dies allerdings zu komplexen Wikitextstrukturen und einer weniger effizienten Datenverarbeitung.

Ein bessere Lösung für neue nicht-proportionale Maßeinheiten ist das Programmieren eines eigenen PHP-Skriptes, das die benötigten Umrechnungen bereitstellt. Es ist auch nicht sonderlich schwierig SMW auf diese Weise zu erweitern, da man einfach den entsprechenden Quelltext für den Datentyp „Temperatur“ kopieren und anpassen kann. Dieser macht bspw., einschließlich Kommentaren, wenig mehr als 100 Zeilen aus. Sobald ein solcher eigener Datentyp implementiert ist, können die Attribute, die provisorisch auf den Datentyp „Zahl“ zurückgriffen, ohne negative Auswirkungen auf bestehende Artikel, einfach auf den neuen Datentyp umgestellt werden. Dies ist deshalb möglich, da sich eigene Datentypen analog zum Datentyp „Zahl“ verhalten, sofern nicht unterstützten Einheiten genutzt werden.

Anzeige der Maßeinheiten anpassen
Ein einzelnes Attribut kann ein breites Spektrum an Maßeinheiten abdecken. Zum Beispiel kann ein einzelnes Attribut für Strecken mühelos sowohl Lichtjahre als auch Nanometer unterstützen. Auch wenn man nur ein paar der relevanten Maßeinheiten benötigt, so könnte es dennoch nützlich sein alle relevanten Maßeinheiten für das Attribut innerhalb einer Vorlage (siehe den vorherigen Abschnitt Proportionale Maßeinheiten → Hinweise) festzulegen. Sofern jemand allerdings ein Attribut „Höhe“ nutzt, um beispielsweise die Höhe eines Gebirges zu beschreiben, wird es indes kaum dienlich sein, diesen Wert in Lichtjahren oder Nanometern darzustellen.

SMW ermöglicht es daher anzugeben, in welcher der unterstützten Maßeinheit der Wert eines Attributs angezeigt werden soll. Sofern diesbezüglich keine Einstellung vorgenommen wurde, wird das Attribut in allen unterstützten Maßeinheiten dargestellt, allen voran in der Haupteinheit mit der „Entspricht“-Angabe „1“ (Umrechnungsfaktor „1“).

Um die darzustellende(n) Maßeinheit(en) anzugeben, wird wir das Spezialattribut „Einheiten“ auf der Seite des betreffenden Attributs genutzt. Als Wert wird/werden die gewünschten Maßeinheiten aufgezählt, jeweils mit einem Komma voneinander getrennt. Zum Beispiel könnte die Seite für das Attribut „Höhe“ folgende Angabe enthalten: Einheiten::km,ft,miles Als Ergebnis würden Werte des Attributs „Höhe“ in der Faktenanzeige nur noch in jenen drei angegebenen Maßeinheiten dargestellt werden, auch wenn für das Attribut möglicherweise dutzende weitere Maßeinheiten mit dem Spezialattribut „Entspricht“ festgelegt wurden. In gleicher Weise werden innerhalb des Tooltips für jeden Wert dieses Attributs die entsprechenden Werte in den drei Maßeinheiten berechnet und angezeigt. Diese Anpassung funktioniert für alle Attribute, die einen numerischen Datentyp verwenden.

Sofern das erste Symbol einer Maßeinheit geändert wird, sollte das bisherige in jedem Fall als mögliches Alternativsymbol belassen werden, da SMW sonst Probleme bei der Umrechnung bestehender Werte haben könnte.

Eigene Maßeinheiten in früheren Versionen von SMW
Bis Semantic MedaiWiki 1.5.6 verfügten die Datentypen über eigene Wikiseiten auf denen, im Gegensatz zu jetzt, wo dies auf den Seiten der Attribute geschieht, die zugehörigen Maßeinheiten festgelegt wurden. Zudem konnte man Datentypen selbst definieren. Auch gab es noch nicht den Datentyp „Maß“ und sowohl beim Datentyp „Zahl“ sowie bei selbstdefinierten Datentypen konnten unbekannte Maßeinheiten für Eingaben verwendet werden. Dies wurde zum jetzigen Verfahren geändert, um Vereinfachungen zu erreichen. Nunmehr benötigt man einen Namensraum weniger, weniger Wikiseiten und es gibt weniger Sonderfälle. Um Festlegungen zu Maßeinheiten mehrfach wiederverwenden zu können, werden diese auf Vorlagen vorgenommen, die auf den betreffenden Attributseiten eingebunden werden können (siehe hierzu Proportionale Maßeinheiten → Hinweise). Die Dokumentation des alten Verfahrens befindet sich auf dieser Hilfeseite.