скільки А - підклас В, то всі примірники А також повинні бути екземплярами класу В.
4.2. Аналіз вузлів-братів в ієрархії класів
Вузли-брати в ієрархії класів
Вузли-брати в ієрархії - це класи, які є прямими подклассами одного і того ж класу (див. Розділ 4.1).
Всі вузли-брати в ієрархії (крім тих, що перебувають у корені) повинні розташовуватися на одному рівні узагальнення. p> Наприклад, Біле вино і Chardonnay не повинні бути подклассами одного і того ж класу (скажімо, класу Вино). Біле вино - більш загальне поняття, ніж Chardonnay. Вузли-брати повинні представляти поняття, які знаходяться В«на одній лініїВ», так само як розділи одного рівня в книзі повинні знаходитися на одному рівні узагальнення. У цьому сенсі вимоги до ієрархії класів схожі на вимоги до структури книги. p> Однак поняття, які знаходяться в корені ієрархії (і які завжди представлені як прямі підкласи деякого самого загального класу, такого як Thing), представляють основні ділення в предметній області і не повинні бути схожими поняттями.
Що називати В«занадто багатоВ», а що - В«занадто малоВ»? p> Не існує жорстких правил щодо того, скільки прямих підкласів повинен мати клас. Тим не менш, у багатьох онтологіях з чіткою структурою є від двох до дюжини прямих підкласів. Звідси два керівних принципу:
Якщо клас має тільки один прямий підклас, то, можливо, при моделюванні допущена помилка або онтологія неповна. p> Якщо у даного класу є більше дюжини підкласів, то, можливо, необхідні додаткові проміжні категорії. p> Перше правило схоже на правило набору тексту, яке свідчить, що у маркованого тексту ніколи не повинна бути лише одна маркована крапка. Наприклад, більшість червоних бургундських вин - це вина Cфtes d'Or. Припустимо, що ми хотіли представити тільки цей основний тип бургундських вин. Ми могли створити клас Red Burgundy і потім єдиний підклас Cotes d'Or (рис. 6а). Тим не Проте, якщо в нашому уявленні червоні бургундські вина та вина Cфtes d'Or, по суті, еквівалентні (всі червоні бургундські вина є винами Cфtes d'Or і всі вина Cфtes d'Or - це червоні бургундські вина), то немає необхідності створювати клас Cotes d'Or, і він не додасть в подання нову інформацію. Якби нам потрібно було включити вина Cфtes Chalonnaise (дешевші бургундські вина з області на південь від Cфtes d'Or), то ми б створили два підкласу класу Burgundy: Cotes d'Or і Cotes Chalonnaise (рис. 6б).
Рис. 6. Підкласи класу Red Burgundy. p> Наявність у класу тільки одного підкласу вказує на помилку при моделюванні.
Тепер припустимо, що ми перерахували всі вина як прямі підкласи класу Вино. Тоді цей список буде включати такі більш загальні сорти, як Beaujolais і Bordeaux, так само як і більш конкретні вина, як Paulliac і Margaux (рис. 7а). У класу Вино занадто багато прямих підкласів і, дійсно, для того щоб онтологія відбивала різні сорти вин більш чітко, Medoc має бути підкласом Borde...