Help:Одиниці вимірювання

Ця сторінка пояснює яким чином сторінки можуть більше контролювати над відображення і перетворення одиниць виміру; зокрема, для властивостей типу даних Кількість. Ця особливість робить розмітку більш гнучкою: кожен може переглядати і вводити дані в його улюбленій одиниці виміру без обмеження взаєморозуміння. Наприклад, деякі люди можуть віддавати перевагу відстані, наведеної в "милях"; інші - в "км". В інших випадках "мікрон" є більш придатними.

Типи даних і властивості, що підтримують перетворення одиниць виміру
SMW має вбудовану підтримку для деяких типів, які можуть обробляти одиниці виміру (наприклад температура). Такі типи можуть приймати, перетворювати і відображати значення в різних одиницях виміру. Ви можете побачити це в factbox статті "Berlin", де площа подана в різних одиницях. Для того, щоб підтримувати такі функції, треба знати, як перетворити значення з однієї одиниці виміру в іншу. Це досить легко, у багатьох випадках, але може також включати більш складні обчислення в інших ситуаціях. Ми розрізняємо два випадки: 1. Перетворення між бажаними одиницями є пропорційним, тобто ви просто повинні помножити одне значення на коефіцієнт перетворення, щоб отримати значення в іншій одиниці. Наприклад, для перетворення кілометрів у милі. 2. Перетворення між одиницями не пропорційне і вимагається більше складних обчислень. Наприклад, це відбувається при перетворенні температури, так як вам потрібно додати і помножити, щоб перетворити °C на °F. Для всіх одиничних перетворень першого виду, тип данихкількість може бути використаний для визначення одиниць і коефіцієнти перерахунку для властивостей у вікі. Для другої ситуації, ми обговоримо деякі можливості нижче.

Перетворення пропорційних одиниць виміру
Тип кількість служить для оголошення властивостей, чиї значення містять числа з одиницями виміру. «Одиниця виміру» може бути будь-якою текстовою міткою, яка не починається з числа. Для того, щоб зробити одиницю виміру (або альтернативну одиницю виміру)доступною, вона спочатку має бути описана на сторінці властивостей, як описано нижче. Тільки описані одиниці можуть бути використані, всі інші будуть відхилені, як помилки введення. Тому властивість типу кількість дає мало користі, доки хоча б одна одиниця буде описана. Перевагою цієї суворої системи є те, що Семантична МедіаВікі може порівняти значення властивості одні з іншими, навіть якщо різні одиниці виміру були використані для їх написання. Кожне введене значення чітко визначає «кількість» (наприклад, кількість часу або відстані) і є зрозумілим, навіть, якщо написане в різних одиницях виміру. Значення властивості дійсно така кількість (і це те, що зберігається), а не конкретний текст, який був використаний для запису на деякій вікі-сторінці (цей текст не зберігається). Подібну поведінку ми вже спостерігали для інших типів даних, наприклад не зберігається яким чином було написано число: "2" чи "2,0". Програма обробляє їх як однакові числа.

Перш, ніж використовувати перетворення одиниць виміру, слід створити відповідну властивість. Зазвичай, ми маємо спочатку пошукати, можливо, потрібна влатисвість уже існує. Якщо ні, то слід створити. Для прикладу: ми хочемо створити властивість Property:Power для вимірювання фізичної величини потужність. В новій статті спершу слід написати кілька речень про мету використання цієї властивості. В нашому випадку ми можемо написати, що потужність вимірюється у ваттах. Це також допомагає іншим при пошуку за ключовими фразами. Для встановлення типу даних, можна ввести наступну розмітку:

has type::quantity

десь на сторінці, а найкраще в реченні. Щоб описати одиницю виміру використовуємо спеціальну властивість:corresponds to. Для прикладу: щоб вказати основну одиницю виміру нового типу даних для потужності, додаємо:

Corresponds to::1 Вт

Значення "1 Вт" становить дві речі: (1) типи розуміють одиницю виміру "Вт" і (2) одиниця виміру "Вт" є головною (для цього служить "1"). Головна одиниця виміру відображається за замовчуванням для цього типу даних, і застосовується навіть, коли користувач вказав просто число без вказання одиниці виміру. Легко можна вказати інші одиниці виміру

Corresponds to::0.001 кВт Corresponds to::0.0013410220 кінських сил.

Це вказує на те, що тип також розуміє кВт та кінські сили. Тепер читання розмітки набуло більшого сенсу: 1 Вт відповідає 0,001 кВт, що в свою чергу відповідає 0,0013410220 кінських сил. В такий спосіб ви можете підтримувати довільні одиниці виміру до тих пір, поки вони описані в такий спосіб.

У багатьох випадках існує кілька способів звертання до однієї одиниці виміру. Наприклад, ми хотіли б, щоб користувачі могли писати "Вт", а також "Ватт" і навіть "Ватти". Короткий спосіб зробити це полягає в розділенні додатковх одиниць комою "," замість того, щоб ствоювати декілька відповідностей за допомогою "corresponds to". Наприклад, можна написати:

Corresponds to::1 Вт, Ватт, Ватти Corresponds to::0.0013410220 кс, кінські сили, кінських сил

У цьому випадку, основною одиницею є перша після 1, в нашому прикладі "Вт". Властивість будуть розуміти всі одиниці, визначені у "corresponds to", і буде показано перетворення між ними (без дублювання, тобто SMW не відображає "Вт" і "Ватт").

Внутрішньо, всі значення будуть перетворені в основну одиницю, і RDF експорт тільки покаже значення цієї одиниці. Введення даних, що не включає одиницю виміру взагалі, також буде сприйняте як значення в основній одиниці виміру. З цієї точки зору, перетворення одиниць виміру - це вид попередньої обробки (введених даних) і післяобробки (для виводу), що полегшує користувачам працю з одиницями виміру. Відображення одиниць виміру у вікі легко налаштовується, див. нижче.

Таким чином, може бути забезпечено, що відповідні властивості, завжди подаються тих же одиницях.

Примітка: Одиниці виміру завжди мають бути написані після числа у значенні властивості. Приставка типу $ не підтримується.

Перетворення непропорційних одиниць виміру
З типом даних Кількість можна вказати тільки пропорційний коефіцієнт, множник. Таким чином, ви не можете мати різні основи для різних одиниць виміру, логарифмічні перетворення, тощо. Наприклад, ви не можете визначити користувацьке перетворення властивостей, які повинні перетворити температуру з градусів Цельсія в градуси Фаренгейта (перетворення, яке включає в себе не тільки множення, але і додавання). Тим не менш, у випадку з температурою, Семантична МедіаВікі вже надає вбудований тип даних Температура, що підтримує подібне перетворення, але може бути непридатним для інших випадків.

Семантична МедіаВікі не дозволяє встановлення користувацьких непропорційних одиниць. Один із способів для цього є використання типу даних Число; слід пропустити одиницю виміру в розмітці, і тільки записати її у тексті. Це усуває звичну перед-і після-обробку, але пропонує ті ж самі можливості в умовах більшості інших функцій (запити, експорт і т.д.). Можна також використовувати шаблон з аналізатором функцій для здійснення певних перетворень одиниць, але це зазвичай призводить до складних текстів і менш ефективної обробки.

Краще рішення, якщо нова одиниця виміру дійсно потрібна, так це написати невеликий скрипт, який реалізує необхідні перетворення. Це не важко розширити Семантичну МедіаВікі в такий спосіб, і можна просто скопіювати і прилаштувати: скрипт для типу температура, який займає трохи більше 100 рядків з коментарями включно. При реалізації такого нестандартного типу, існуючі властивості типу Число можуть бути змінені на новий тип без будь-яких негативних наслідків для існуючих статей. При зіткненні з непідтримуваними одиницями виміру, користувацькі типи і раніше вестимуть себе як прості типи даних Число.

Налаштування відображення одиниць виміру
Одна властивість може підтримувати широкий спектр одиниць виміру. Наприклад, одна властивість довжини може легко підтримувати астрономічні одиниці і нанометри. Навіть, якщо тільки деякі з цих одиниць необхідні в певній властивості, все ще може бути корисним оголосити всі відповідні одиниці виміру в шаблоні, як описано вище. Однак, якщо хтось використовує властивість "Висота", щоб вказати висоту гори, то навряд чи було б корисно побачити це значення у парсеках чи анґстремах. Є можливість вказати, які одиниці виміру властивість повинна відображати з всіх одиниць, які підтримує. Якщо не має переваг на вивід даних, то буде відображати всі її одиниці виміру, починаючи з основної.

Щоб задати користувацьке відображення одиниць виміру, додайте спеціальну властивість (Відображення одиниць виміру) на сторінці властивості, пам'ятаючи, що кожну одиницю виміру слід відділяти комою. Наприклад: стаття Property:Height може містити твердження:

display units::км,дюйми,милі

Це призводить до того, що у зведенні даних будуть відображені тільки ці три одиниці для значення властивості висоти, хоча вона може підтримувати десятки інших одиниць виміру. Точно так само, підказка для кожного такого значення покаже ці перетворення. Це налаштування працює для всіх властивостей, які використовують типи з підтримкою одиниць виміру.

Одиниці виміру в попередніх версіях
До версії SMW 1.5.6 типи даних мали свої сторінки і одиниці виміру визначались на них, а не на сторінках властивостей. Можна було визначати користувацькі типи даних. Не існувало типу даних "кількість". В нових версіях все стало простіше.

Дивіться документацію про старі системи.