Help:Unités configurables

Cette page explique comment mieux contrôler l'affichage et la conversion d'unités. Les unités peuvent être utilisées pour des propriétés du Type Number et rendre les annotations plus flexibles : chacun peut voir et entrer des données dans son unité préférée sans limiter la compréhension mutuelle. Par exemple, certains peuvent vouloir préférer une distance exprimée en « miles », les autres en « km ». Dans d'autres cas, il peut ne pas être approprié d'afficher une distance en kilomètre si des microns sont mieux adaptés.

Types configurables avec conversions d'unité
SMW a une gestion intégrée de certains types qui peuvent traiter les unités (par exemple Temperature), mais il est possible d'en ajouter beaucoup d'autres. Les types qui gèrent des unités peuvent accepter, traiter et afficher les valeurs de plusieurs unités différentes. Vous pouvez le constater dans le bordereau de faits d'articles comme « ow:Berlin » où la surface est exprimée en plusieurs unités.

Afin de proposer ces fonctions, SMW a besoin de savoir comment convertir les valeurs d'une unité en une autre. Ceci est assez facile dans beaucoup de cas, mais peut nécessiter des calculs plus compliqués dans d'autres. Nous distinguons deux cas :
 * 1) La conversion des unités voulues est proportionnelle, par exemple, vous n'avez besoin que de multiplier une valeur par un facteur de conversion fixe pour obtenir la valeur dans d'autres unités. C'est le as par exemple pour la conversion de kilomètres en miles ;
 * 2) La conversion d'unités n'est pas proportionnelle et des calculs plus complexes sont nécessaires. Par exemple, ceci se passe avec les températures parce qu'il faut ajouter et multiplier de manière à avoir les °C en °F.

Pour toutes les conversions de la première espèce, vous pouvez facilement créer des types configurables qui traitent ces unités. Pour la seconde situation, nous présentons quelques possibilités plus bas.

Créer de nouveaux types de données avec conversion d'unités proportionnelle
Avant de créer de nouveaux types de données, soyez sûrs que ce type n'existe pas déjà en consultant Special:Types.

Si le type voulu n'existe pas déjà, vous pouvez facilement en créer un nouveau. Tout d'abord, vous devez commencer par créer une page dans l'espace de nom Type. Par exemple, vous pouvez vouloir créer le Type:Power. Dans ce nouvel article, vous pouvez commencer par expliquer le but et l'usage de ce nouveau type. Dans notre cas, on suppose que la quantité physique est normalement mesurée en « Watt ». Ceci aide d'autres à trouver et à réutiliser votre type en cherchant par mot-clef.

Pour préciser les unités supportées, vous utilisez la propriété spéciale corresponds to. Par exemple, pour spécifier l'unité principale de ce nouveau type de données, nous ajoutons Corresponds to==1 W

La valeur « 1 W » établit deux choses : 1° ce type comprend l'unité « W » et 2° l'unité « W » est son unité principale (C'est ce à quoi sert le « 1 »). Intuitivement, ceci exprime qu'«&nbsp,une mesure de ce type correspond à 1W ». Il est facile de spécifier d'autres unités. Par exemple,

Corresponds to::0.001 kW Corresponds to::0.0013410220 hp

Ceci signifie que le type comprend l'unité « kW » et « hp » et que une mesure de l'unité principale correspond à 0,001 kW et que 0,0013410220 hp. De cette manière vous pouvez traiter des unités quelconques pour autant que leur relation avec l'unité principale puisse être décrite de cette manière.

Dans beaucoup de cas, il existe plusieurs manières de se référer à une seule unité. Par exemple, nous aimerions permettre aux utilisateurs d'écrire aussi bien « W » que « Watts ». Une manière rapide de le faire est de séparer les unités supplémentaires par «, », plutôt que de faire plusieurs « Corresponds to » avec le même facteur. Par exemple, on écrira : Corresponds to::1 W, Watt, Watts Corresponds to::0,0013410220 hp,bhp,horsepower Le premier symbole du « corresponds to:: 1 xx » est l'unité principale. Après avoir sauvegardé la page du nouveau type, l'information « corresponds to » apparaîtra sur son bordereau de faits comme une propriété spéciale. Par exemple, nous pouvons créer une nouvelle Property:Engine power qui est de type power en ajoutant à sa page Has type::Power Cette propriété comprendra toutes les unités définies par les informations « corresponds to » de son types de données, et affichera les conversions entre elles (sans doublons, c'est-à-dire sans afficher « W » et « Watt »). En interne, les valeurs seront toutes converties dans l'unité principale et l'export RDF affichera également la valeur dans cette unité. L'affichage d'unités sur le wiki largement configurable et n'a pas besoin d'être fait dans l'unité principale. V. plus bas.

Conversion non proportionnelle d'unités
Il n'est possible que de spécifier un facteur de conversion, un facteur. Ainsi vous ne pouvez pas avoir différentes bases pour différentes unités, des facteurs logarithmiques, etc. Vous ne pouvez donc créer de type configurable pour la température, qui convertirait les degrés Celsius en Fahrenheit. Dans le cas de la température, SMW propose déjà un température intégré, qui gère cette conversion, mais ceci peut ne pas être le cas dans d'autres cas.

SMW n'autorise pas des unités configurables non-proportionnelles sur le wiki. Une astuce pour éviter ceci est d'utiliser Number qui accepte les chaînes d'unité après un nombre donné. Ce type ne sait pas comment faire de convertion entre ces valeurs, mais il reconnaît quand même l'unité et sera capable de distinguer différentes unités. Si tous les utilisateurs d'un type exotique donné acceptent d'utiliser la même unité, cette fonction sera comparable à l'utilisation d'une véritable unité.

Une manière plus élaborée de pallier cette situation est d'écrire un petit script qui implémente la conversion voulue. Il n'est pas compliqué d'étendre SMW de cette manière et on peut simplement copier et adapter le code pour Type:temperature (qui fait moins de 70 lignes, commentaires compris). De plus, implémenter un tel type configurable ayant besoin d'utiliser le type:number peut être changé dans le nouveau type sans avoir d'effet négatif sur les articles existants. Lorsque l'on est confronté à des unités non gérées, les types configurables se comporteront selon le type de donnée nombre.

Configurer l'affichage d'unités
Grâce à l'utilisation de nombres à virgule flottante, un type simple peut gérer un grand nombre d'unités. Par exemple, un type de longueur simple peut facilement gérer des années lumières et des nanomètres. Cependant, si quelqu'un utilise une propriété « altitude » pour décrire la hauteur d'une montagne, il serait peu utile d'afficher cette valeur en années lumière ou en nanomètres.

SMW vous permet de spécifier laquelle des unités doit être affichée parmi toutes les unités gérées. Cette information est spécifique à la propriété : deux propriétés peuvent utiliser le type length tout en gardant un affichage différent dans le wiki. si aucun choix d'affichage n'est fait, la propriété affichera toutes les unités du type, avec l'unité principale d'abord (celle avec le facteur de conversion 1).

Pour configurer l'affichage d'unités, ajoutez la propriété spéciale display units aux propriétés des pages, en mentionnant chaque unité que vous souhaitez afficher, séparées par une virgule. Par exemple, l'article Property;Height peut contenir les informations : display units::km,ft,miles Il en résultera que le bordereau de faits n'affichera que ces trois unités pour les valeurs de la propriété Height, même si son type length supporte plein d'autres unités. De même, l'indication pour chaque valeur similaire affichera ces conversions. Cette configuration marche pour toutes les propriétés qui utilisent les types gérant une unité, peu importe que le type ait été configuré ou qu'il soit intégré.

Si vous modifiez l'affichage de la première unité, veillez à afficher l'unité standard du type aux utilisateur comme étant une des autres unités affichées, parce que SMW continue à convertir les valeurs dans l'unité standard lors de l'enregistrement.