Классы / экземпляры в Онтологии

Я пытаюсь постигать основы онтологии. Вот пример:

  • автомобиль (класс)
  • VW CC 2009 года (подкласс или экземпляр?)
  • VW CC моего соседа 2009 года (экземпляр)

Моя проблема понимает то, что является "VW CC 2009 года" (как модель автомобиля). При создании модели продукта подклассом в онтологии - внезапно онтология становится чрезмерно увеличенной в размерах с тысячами подклассов "автомобиля". Это избыточно. В то же время мы не можем сказать, что "VW CC 2009 года" является экземпляром, по крайней мере, это не материальный экземпляр класса.

Имеет смысл различать регулярные экземпляры и материал (отличные физические объекты)?

В другой руке, если оба - экземпляры (различной природы так сказать), то, как экземпляр может наследовать свойства / отношения некласса?

7
задан animuson 7 August 2012 в 19:18
поделиться

2 ответа

Ненавижу говорить, что это зависит, но это зависит.

Если вам нужно смоделировать каждую машину в мире, и у вас есть методы, которые вы можете вызывать на них (например, «сменить шину» - процесс, который очень отличается для каждой модели), то да, вы собираетесь у вас много раздутых классов, потому что ваша реальная ситуация тоже раздута.

Если вы просто хотите иметь базу данных изображений архетипических автомобилей, и у вас нет машины, будь то изображение экземпляра вашего соседа или экземпляра вашей сестры, тогда вы можете отбросить нижний слой. «2009 VW CC» вполне может быть экземпляром, даже если вы можете себе представить, что это также класс другой модели.

В качестве альтернативы, возможно, вам вообще не нужно делать настоящий подкласс. Достаточно простой ссылки. Например, страховая компания знает большой список моделей автомобилей и годов выпуска, но разработчики не пишут по одному подклассу для каждого. Вместо этого у них есть база данных моделей автомобилей, где одна строка может представлять VW CC 2009 года выпуска. Когда вы застраховываете свой автомобиль, они создают экземпляр «Insured Car» со ссылкой на экземпляр «2009 VW CC».

Это не строго соответствует «Использовать наследование для отношения« есть-а »», но операции со всеми типами автомобилей идентичны - меняются только параметры (например, стоимость страховки в год), и новые модели автомобилей записываются в базу данных, а не в код.

Предполагается, что вы можете смоделировать различия между разностными моделями как просто параметры одних и тех же методов на автомобиле.

(Кроме того: когда iPhone стал доступен через веб-сайты телефонных компаний, я заметил, что он сломал модели их класса - их веб-сайты, казалось, обрабатывали десятки марок и моделей телефонов на одной странице - предположительно, используя простую базу данных телефонов и их функций - а затем потребовалась специальная страница для работы с моделями iPhone, предположительно потому, что в их классах требовались новые специальные методы для поддержки некоторых аспектов продажи iPhone. Автоматизированные стойки продаж скажут: «Нажмите 1, чтобы купить телефон. Нажмите 2, чтобы купить iPhone. ")

6
ответ дан 7 December 2019 в 07:42
поделиться

У вас все наоборот.

2009 VW CC наследует от класса автомобиль . Таким образом, 2009 VW CC должен знать автомобиль , но автомобиль не должен знать о 2009 VW CC . Хотя в действительности мы иногда используем термин «подкласс», автомобиль ничего не знает ни о каком из своих подклассов.

Что более интересно, если вы рассматриваете прототипное наследование (как в javascript), где объекты наследуются напрямую от других объектов (представьте, если бы ваш 2009 VW CC унаследовал аспекты 2009 VW CC вашего соседа ). На самом деле это реализовано так: новый объект имеет секретный указатель обратно на объект, от которого они унаследованы. Если вы подумаете об этом секретном указателе, вы увидите, как исходный объект не раздувается.

Теперь, если вы предполагаете, что множественное наследование и длинные генеалогические деревья могут приводить к запутанным структурам, я соглашусь с вами.

1
ответ дан 7 December 2019 в 07:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: