1

Тема: Вопрос по понятиям / экземплярам в онтологии

Добрый день,

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

Понятно, что в мире существует очень много марок автомобилей. Было бы логично, если бы марки автомобилей были не нижнеуровневыми понятиями (т.к. тогда у класса автомобилей были бы тысячи похожих суб-классов), а если бы они были экземплярами. Однако может сложиться ситуация, когда нам нужно из марки авто, к примеру Volkswagen CC 2009 года, сделать более конкретный клон, к примеру Volkswagen CC 2009 года, принадлежащий моему соседу.

В таком случае, подразумевает ли то, что экземпляр Volkswagen CC 2009 года автоматически становится классом, а Volkswagen CC 2009 года, принадлежащий моему соседу становится экземпляром? Хотелось бы избежать такой ситуации.

Мне подсказывают, что в таком случае лучше, чтобы все марки машин были экземплярами, а в случае, если нужно добавить конкретный товар, мы добавляем к нему "невидимую" ссылку на марку этого товара. Таким образом, мы клонируем экземпляр (наш товар наследует ВСЕ атрибуты марки), и добавляем к нему дополнительные атрибуты (к примеру, принадлежность кому-то, географическое расположение и т.п.)

Какие есть идеи по этому вопросу?

2

Re: Вопрос по понятиям / экземплярам в онтологии

"Volkswagen CC 2009 года" --- это класс, вероятно подкласс "Volkswagen CC". "Volkswagen CC 2009 года, принадлежащий моему соседу" --- экземпляр класса "Volkswagen CC 2009 года" и, следовательно, экземпляр класса "Volkswagen CC". Поскольку класс может иметь атрибуты точно так же, как экземпляр, проблем не предвидится.

3

Re: Вопрос по понятиям / экземплярам в онтологии

Иван прав.

"Volkswagen CC 2009 года" - это *множество* объектов и должно 100% моделироваться как класс.
Если "Volkswagen CC 2009 года, принадлежащий моему соседу" - это *конкретный* объект, то он должен моделироваться как экземпляр. Если же имеется в виду "все машины VW CC 2009, принадлежащие моему соседу (соседям)", то также нужен класс.

Я не очень понял, как в Вашем последнем предложении товар будет наследовать атрибуты марки. Скорее всего, Вы планируете делать это неким нестандартным, специфическим для Вашего приложения образом. Тогда это решение не очень удачное. Собственно говоря, тогда онтология фактически вырождается в базу данных (пусть и в полуструктурированном виде).

4

Re: Вопрос по понятиям / экземплярам в онтологии

PavelK пишет:

Я не очень понял, как в Вашем последнем предложении товар будет наследовать атрибуты марки. Скорее всего, Вы планируете делать это неким нестандартным, специфическим для Вашего приложения образом. Тогда это решение не очень удачное. Собственно говоря, тогда онтология фактически вырождается в базу данных (пусть и в полуструктурированном виде).

Смысл такой. Посколько марок товаров гораздр больше, чем самих типов товара, мне кажется бессмысленно описывать все модели, которые по ходу могут отличаться в одном атрибуте, скажем (опять же, на примере авто, есть модель и trim, на том же примере это Volkswagen CC Sport 2009, Volkswagen CC Sport 2010 и т.п., и их отличия от года к году минимальны, скажем цвета салона). Другими словами, мы не добавляем к онтологии достаточно важной информации, чтобы оправдать такое количество схожих классов.

А вот количество экземпляров, как мне кажется, может расти до бесконечности и да, как вы сказали, фактически превратиться в "полуструктурированную" базу данных.

5

Re: Вопрос по понятиям / экземплярам в онтологии

iv_an_ru пишет:

"Volkswagen CC 2009 года" --- это класс, вероятно подкласс "Volkswagen CC". "Volkswagen CC 2009 года, принадлежащий моему соседу" --- экземпляр класса "Volkswagen CC 2009 года" и, следовательно, экземпляр класса "Volkswagen CC". Поскольку класс может иметь атрибуты точно так же, как экземпляр, проблем не предвидится.

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

6

Re: Вопрос по понятиям / экземплярам в онтологии

У меня сильное подозрение, что в твоем ad hoc решении с "невидимыми" ссылками техническая сторона пострадает намного больше. У тебя вся онтология/база данных получается жестко завязана на механизм этих ссылок и наследования атрибутов нормальными объектами от объектов, которые на самом деле должны быть классами.
Что касается схожих классов, то тут я тоже не соглашусь с возражениями. Не обязательно всем классам давать имена. Например, объект "х" вполне может иметь тип-выражение "Volkswagen and hasYear value 2009". При этом "х" автоматом наследует все что нужно от класса Volkswagen без всяких "невидимых" ссылок.
В общем, я бы не стал, но дело твое.

7

Re: Вопрос по понятиям / экземплярам в онтологии

PavelK пишет:

В общем, я бы не стал, но дело твое.

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

В общем главный мой вопрос - как должна выглядеть подобная онтология, чтобы ей можно было пользоваться на "промышленном" уровне, а не только в неких научно-исследовательских учреждениях.

Еще одна мысль в отношении к моему подходу касается пользовательского контента. Пользователь, не знакомый с понятиями онтологии, не сможет создать корректный класс типа "Volkswagen and hasYear value 2009". С другой стороны, любой пользователь сможет взять готовый класс, подставить в него какие-то значения атрибутов и получить экземпляр. В то время как другой пользователь возьмет этот экземпляр, сделает из него клон, поменяет атрибуты и скажет, что это его экземпляр.

8

Re: Вопрос по понятиям / экземплярам в онтологии

sasha пишет:

В общем главный мой вопрос - как должна выглядеть подобная онтология, чтобы ей можно было пользоваться на "промышленном" уровне, а не только в неких научно-исследовательских учреждениях.

Я тебе пытаюсь объяснить одно: то, что ты предлагаешь, идет вразрез с принципами OWL. В соответствии с ними множества объектов моделируются как классы, а конкретные объекты - как экземпляры.
Если ты эти принципы нарушаешь, то будь готов к тому, что не сможешь использовать преимущества OWL. Ты сразу же теряешь механизм наследования атрибутов (заменяя его своими невидимыми ссылками), скорее всего возможность использования стандартных reasoner'ов (которые не будут понимать, как именно одни экземпляры что-то наследуют от других через какие-то ссылки), классификатор (т.е. автоматическое построение иерархии классов), проверку логической согласованности (поскольку согласованность твоих ссылок придется проверять самому) и бог знает что еще (дальше надо смотреть на реализацию). Прежде чем в это лезть, стоит подумать, а нужен ли тебе вообще OWL.

sasha пишет:

Еще одна мысль в отношении к моему подходу касается пользовательского контента. Пользователь, не знакомый с понятиями онтологии, не сможет создать корректный класс типа "Volkswagen and hasYear value 2009".

Это забота не пользователя, а прикладного интерфейса. В Protege тоже не все умеют создавать выражения, поэтому есть специальные диалоги для этого. Проблемы интерфейса надо отделять от проблем моделирования.

sasha пишет:

С другой стороны, любой пользователь сможет взять готовый класс, подставить в него какие-то значения атрибутов и получить экземпляр. В то время как другой пользователь возьмет этот экземпляр, сделает из него клон, поменяет атрибуты и скажет, что это его экземпляр.

И для этого тоже нужен интерфейс.

9

Re: Вопрос по понятиям / экземплярам в онтологии

Продолжение темы здесь: http://forum.semanticfuture.net/viewtopic.php?id=83

10

Re: Вопрос по понятиям / экземплярам в онтологии

Добрый вечер всем!)) У меня следующий вопрос: в моей онтологии существует класс - "размер_камня", я создаю индивиды - большой, маленький и средний, если я хочу уточнить в их описании что это не одно и тоже, я могу, скажем, для индивида "большой" определить "маленький" и "средний" как "different individuals" при условии того, что моя онтология единственная и другие онтологии я не подключаю?

Thumbs up Thumbs down

11

Re: Вопрос по понятиям / экземплярам в онтологии

Можешь. А еще можно посмотреть facet restrictions для таких вещей (см. 7.5 Datatype Restrictions). Т.е. можно описать интервалы для "большой", "маленький" и т.д. и тогда тот факт, что они различны сможет вывести сам reasoner.

PS. Лучше все же создавать новые темы на новые вопросы