Uk:Namespace
Простір імен визначається префіксом, суфіксом або інфіксом, що додаються до ключа . Він може використовуватися в особливих випадках для групування тісно повʼязаних ключів або як додатковий кваліфікатор для ключів. Символ двокрапки (
:
) використовується як роздільник просторів імен в іменах ключів. Можливі переваги створення ключів з просторами імен повинні бути зважені з їхніми недоліками.
Групування тісно повʼязаних ключів в просторах імен допомагає виокремити цю групу ключів, уникаючи конфліктів імен, і забезпечує більш високий рівень контексту для конкретного ключа.
Простори імен як «кваліфікатори» використовуються, коли атрибут (наприклад, код мови) застосовується до широкого діапазону не повʼязаних між собою основних ключів.
Технічно обидва поняття розглядаються значною мірою однаково — імена ключів, що містять роздільник двокрапку, є рядками символів, як і будь-які інші ключі.
Зберігання значення у спосіб, подібний до синтаксису простору імен, тобто key:suffix=value, де suffix дорівнює деякому змінному значенню, яке не служить для групування, не означає, що тут використовується концепція простору імен. Це просто суфікс, відділений двокрапкою.
Приклад використання простору імен
- Теґи з префіксом
addr:*=*
використовуються для запису складових частин адреси - Суфікс :conditional використовується для обмежень, що діють за певних умов
- Суфікс :shop використовується для позначення того, що пропонується
- Теґи з префіксом
contact:*=*
- Date namespace — суфікс дат було запропоновано (у статті Порівняння концепцій життєвого циклу) для визначення протяжності в часі, коли теґи були дійсними, наприклад
amenity:1835-1965=school
,name:1933-1945=Adolf-Hitler-Straße
. Суфікс є останньою частиною ключа (наприклад, після суфікса коду мови). Увага: ця синтаксична конструкція є відносно поширеною, але вона є лише частиною пропозиції, а технічно не є належним простором імен. generator:output=*
надає інформацію про потужність електростанції, що виробляє електроенергію.is_in=*
старий простір імен, який все ще присутній у базі даних- :lanes суфікс для додавання інформації, що стосується конкретної смуги руху.
- Uk:Lifecycle prefix — Було запропоновано (у статті Порівняння концепцій життєвого циклу) використовувати префікс, такий як "proposed:", "construction:", "disused:", "abandoned:" або "demolished:", щоб позначати обʼєкти в особливому стані, наприклад
construction:aerialway=gondola
. Для автомагістралей та залізниць де-факто стандартом є інше теґування, наприкладhighway=construction
+construction=motorway
. Див. Порівняння концепцій життєвого циклу. - Uk:Multilingual names — суфікси коду використовуються для багатьох ключів, таких як «name:ro=...», що позначає назву обʼєкта румунською. Дивіться Uk:Map internationalization та Uk:Multilingual names прикладів. Суфікс стоїть одразу після основного ключа.
parking:left=*
,parking:right=*
абоparking:both=*
надає інформацію про розташування смуги для стоянки взовж дорогиhighway=*
source=*
зазанчає джерело відомостей для всіх теґів або тільки для конкретнихtraffic:hourly=*
вказують щільність трафіку і можуть використовуватися як простір імен.- Cуфікси Uk:Forward & backward, left & right використовуються щоб зазначити, що теґ застосовується до відповідної сторони відносно Лінії
OSM.
- Більше прикладів у вигляді таблиці:
Простір імен | Опис | Перелік розподілу |
---|---|---|
capacity: | Описує місткість, для якої підходить об'єкт. | taginfo capacity:* |
Номенклатура
- namespace описує всю концепцію (тобто цю сторінку). При використанні як префікс простору імен слово «префікс» часто опускається.
- prefix використовується для зазначення простору імен перед ключем (використовується з Теґами, Uk:Lifecycle_prefix, адресами).
- suffix використовується як кваліфікатор після ключа (використовується з Теґами, обмеженнями що діють за певних умов, Key:name, Uk:Lanes).
- subkey використовується у двох контекстах
- як додатковий ключ, який докладніше описує Елемент (використовується з Key:waste, Key:motorboat)
- як суфікс (використовується з Uk:Lanes, Uk:Key:phone, Uk:Key:addr, Class:bicycle та Template:Tag/doc).
- infix використовується рідше (Теґи, Talk right/left)
Це програмне забезпечення вікі також використовує концепцію «просторів імен», але це не має відношення до концепції «просторів імен» у ключах і теґах, що використовуються в базі даних OpenStreetMap.
Використання просторів імен
На базовому рівні в системі ключ з простором імен буде просто зберігатися та оброблятися як будь-який інший текстовий рядок довільної форми (рядок, який просто містить символ двокрапки).
Багато споживачів даних OSM будуть обробляти ключі саме таким чином. Споживачі часто шукають ключі, які їх цікавлять, а всі невідомі ключі ігноруються. Це може бути бажаним ефектом простору імен. Простори імен можуть використовуватися для відокремлення певних типів спеціалізованої інформації, відокремлюючи ці дані від «основних» даних мапи, щоб було зрозуміло, що вони цікавлять лише більш спеціалізованих споживачів.
Надмірне використання просторів імен
Іменування просторів є чудовим способом структурування схеми даних, але воно також може спричинити проблеми для деяких споживачів даних, які називають це «надмірним використання просторів імен».
- Простір імен проєкту: іноді може виникнути спокуса просто присвоїти ключу простір імен, щоб уникнути конфлікту з іншими даними, замість того, щоб намагатися інтегрувати наявні схеми, але це погана звичка. OSM — це база даних з великою кількістю схем, що означає, що кожен теґ належить до більш ніж однієї схеми, більш ніж одного використання даних, тому важливо інтегруватися з іншими схемами, які вже використовуються, щоб максимізувати роботу з покращення даних.
- Надмірне використання просторів імен призводить до несумісності в базі даних: якщо ми маємо projectfoobar:name=xxx і name=xxx, у багатьох випадках буде оновлено лише одне з цих значень, а інше — ні. Чим простіший і загальніший ключ, тим частіше він буде використовуватися і тим ретельніше буде підтримуватись.
- Надмірне використання просторів імен призводить до розпорошення схеми даних: наприклад, особа, яка цікавиться даними про канали VHF, повинна буде шукати ключ harbour:VHF_channel, а також seamark:habour:VHF_channel, VHF_channel, lock:VHF_channel та vhf, щоб зібрати дані… Використання лише ключа «vhf» має бути достатнім, щоб зрозуміти, що ці дані стосуються порту, шлюзу або іншого обʼєкта OSM, який ми теґуємо.
Обʼєкти мапи, що використовуються найчастіше, тобто найпоширеніші теґи, які нові мапери будуть використовувати найчастіше, прості ключі (без будь-яких просторів імен) мають перевагу.
Коли не використовувати
У деяких випадках все ще можна використовувати загальну нотацію без конфліктів. Наприклад, model=*
проти siren:model=*
. Обидва ключі вказують на модель, але model=*
є коротшим і застосовується до будь-якого відповідного елемента даних, а не тільки до сирен.
Дивіться також
- Homonymous keys — ключі, які служать різним цілям або мають різний тип даних залежно від основного теґу елемента. В інших випадках однойменний ключ може мати різну семантику, коли він використовується на точці
або на лінії
.
- Запит Sophox для найбільш глибоко вкладених підключів
- Простори імен Вікі
- Order of key parts