Целостность онтологии

24 views
Skip to first unread message

Anton Cherny

unread,
Jun 10, 2009, 9:40:05 AM6/10/09
to webofdata.ru
Добрый день, коллеги!

Хотелось бы получить пояснения на описанную ниже ситуацию.
Берем пустую онтологию. Добавляем понятие Sex (Пол), Person(Человек) и
понятие Balalaika(Балалайка)
добавляем два экземпляра к класу Sex - Man и Woman.
добавляем экземпляр Sidorov к классу Person
добавляем свойство hasSex (иметь пол)
потом я добавляю утверждение о том, что Сидоров мужчина (Sidorov
hasSex Man)
Пока все хорошо.

Но вдруг я добавляю restriction на класс Person - hasSex only
Балалайка

Нажиммаю классифицировать и жду, что он заругается....
Но этого не происходит. и я не понимаю почему.

Вопрос: Где у меня в ДНК ошибка?

Dmitry Ulanov

unread,
Jun 10, 2009, 9:54:15 AM6/10/09
to webofdat...@googlegroups.com
Рекоммендую также продублировать вопрос в тематический форум как раз по всему, что связано с онтологиями - http://shcherbak.net/forum/

2009/6/10 Anton Cherny <antony...@gmail.com>



--
dulanov.name

Mikhail Roshchin

unread,
Jun 10, 2009, 10:17:18 AM6/10/09
to webofdat...@googlegroups.com
@ Anton попробуйте скзать что балалайка disjoint с полом человека. Дело в том, что по принципу OWA ризонер и не должен ругаться, пока вы не скажите вполне конкретно, что балалайка не относится ни каким образом к полу человека


2009/6/10 Dmitry Ulanov <dul...@gmail.com>



--
ciao,
Misha
------
Mikhail Roshchin's personal web page www.ruscience.ru

Alexander Sidorov

unread,
Jun 10, 2009, 12:11:28 PM6/10/09
to webofdat...@googlegroups.com
Получается, для того чтобы предотвратить появление нежелательного subject (не типа Sex), нужно дисджойнить каждый класс с каждым?

10 июня 2009 г. 21:17 пользователь Mikhail Roshchin <rosh...@gmail.com> написал:

Антон Черний

unread,
Jun 10, 2009, 1:40:28 PM6/10/09
to webofdat...@googlegroups.com
Спасибо, завтра попробую доложу о результатах.
Саш, дисжойнить надо помойму одноуровневые классы, дальше наследование
сработает. Вот.
Спасибо за наводку.

10 июня 2009 г. 23:11 пользователь Alexander Sidorov
<alex...@gmail.com> написал:

Alexander Sidorov

unread,
Jun 10, 2009, 1:47:50 PM6/10/09
to webofdat...@googlegroups.com
Антон, даже если так... для того чтобы реализовать "защиту от дурака" (не дать присвоить свойству инстанса значение, противоречащее restriction), придется приложить слишком много усилий.

2009/6/11 Антон Черний <antony...@gmail.com>

Антон Черний

unread,
Jun 10, 2009, 7:20:53 PM6/10/09
to webofdat...@googlegroups.com
:-)))
Саш, я открою для тебя страшную тайну...
Грамотное составление онтологий - ацкий пропотливый труд.... :-)

11 июня 2009 г. 0:47 пользователь Alexander Sidorov
(alex...@gmail.com) написал:

Anton Cherny

unread,
Jun 11, 2009, 12:05:35 AM6/11/09
to webofdata.ru
Проверил, действительно, если классы задисджойнить вылетает ошибка
целостности.

On 11 июн, 06:20, Антон Черний <antony.che...@gmail.com> wrote:
> :-)))
> Саш, я открою для тебя страшную тайну...
> Грамотное составление онтологий - ацкий пропотливый труд.... :-)
>
> 11 июня 2009 г. 0:47 пользователь Alexander Sidorov

> (alexi...@gmail.com) написал:


>
>
>
> > Антон, даже если так... для того чтобы реализовать "защиту от дурака" (не
> > дать присвоить свойству инстанса значение, противоречащее restriction),
> > придется приложить слишком много усилий.
>

> > 2009/6/11 Антон Черний <antony.che...@gmail.com>


>
> >> Спасибо, завтра попробую доложу о результатах.
> >> Саш, дисжойнить надо помойму одноуровневые классы, дальше наследование
> >> сработает. Вот.
> >> Спасибо за наводку.
>
> >> 10 июня 2009 г. 23:11 пользователь Alexander Sidorov

> >> <alexi...@gmail.com> написал:


>
> >> > Получается, для того чтобы предотвратить появление нежелательного
> >> > subject (не типа Sex), нужно дисджойнить каждый класс с каждым?
>

> >> > 10 июня 2009 г. 21:17 пользователь Mikhail Roshchin <roshc...@gmail.com>


> >> > написал:
>
> >> >> @ Anton попробуйте скзать что балалайка disjoint с полом человека. Дело
> >> >> в том, что по принципу OWA ризонер и не должен ругаться, пока вы не скажите
> >> >> вполне конкретно, что балалайка не относится ни каким образом к полу
> >> >> человека
>

> >> >> 2009/6/10 Dmitry Ulanov <dula...@gmail.com>


>
> >> >>> Рекоммендую также продублировать вопрос в тематический форум как раз
> >> >>> по всему, что связано с онтологиями -http://shcherbak.net/forum/
>

> >> >>> 2009/6/10 Anton Cherny <antony.che...@gmail.com>

Anton Cherny

unread,
Jun 11, 2009, 12:06:03 AM6/11/09
to webofdata.ru
Спасибо за помощь и поддержку, господа!

Alexander Sidorov

unread,
Jun 11, 2009, 4:22:31 AM6/11/09
to webofdat...@googlegroups.com
Ну никак не укладывается в моей голове сей факт.
Подскажите, есть ли более короткий путь задания ограничения object определенной связи (как в описанном Антоном примере), кроме как сделать множество disjoint'ов? Я представил эту картину в масштабах хотя бы NCI Thesaurus - и ужаснулся.

11 июня 2009 г. 11:06 пользователь Anton Cherny <antony...@gmail.com> написал:

Vladimir

unread,
Jun 11, 2009, 4:43:44 AM6/11/09
to webofdata.ru
У меня вот какой вопрос возник.
Утверждение о том, что классы Пол и Балалайка дизъюнктивны,
действительно отражает какое-то существенное знание
в данной предметной области?
OWL, насколько я понимаю, не для защиты от дурака предназначен,
а для представления онтологий.

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

С уважением,
Владимир

On 11 июн, 12:22, Alexander Sidorov <alexi...@gmail.com> wrote:
> Ну никак не укладывается в моей голове сей факт.
> Подскажите, есть ли более короткий путь задания ограничения object
> определенной связи (как в описанном Антоном примере), кроме как сделать
> множество disjoint'ов? Я представил эту картину в масштабах хотя бы NCI
> Thesaurus - и ужаснулся.
>
> 11 июня 2009 г. 11:06 пользователь Anton Cherny

> <antony.che...@gmail.com>написал:

Mikhail Roshchin

unread,
Jun 11, 2009, 5:43:17 AM6/11/09
to webofdat...@googlegroups.com
@ Александр: мне кажется здесь какое-то непонимание - подставить в класс свойство "дисджойнт" проблем никаких не представляет: для больших онтологий создается скрипт и дело заканчивается через пять минут. скрипт берет все классы и из корня и говорит, что они дисджойнт.

@ Владимир: вы вилимо не совсем понимаете предназначение именно описательной логики и ее отличие от той же логики первого порядка. OWA как раз для того и нужен, чтобы находить неожиданные свойства знаний. Естественно, им надо пользоваться осторожно - всегда есть свои недостатки. Но когда у вас будет опыт побольше создания сложных онтологий (это который предназначены для решения сложных задач, а не больших по размеру), то будете уже автоматом проставлять дисджойнт при определении каждого класса. Создание и тестирование одной такой онтологии (всего 50 классов) может занятъ человеко\месяц - но окупается засчет отсутствия надобности жесткого кодирования. Так что удачи в этом труде

2009/6/11 Vladimir <nom...@gmail.com>

Vladimir

unread,
Jun 11, 2009, 6:40:14 AM6/11/09
to webofdata.ru
Михаил,

> @ Владимир: вы вилимо не совсем понимаете предназначение именно описательной
> логики и ее отличие от той же логики первого порядка.
> OWA как раз для того и
> нужен, чтобы находить неожиданные свойства знаний.

Хотите ли Вы тем самым сказать, что логика первого порядка не
предназначена
для нахождения неожиданных свойств знаний (и в этом состоит ее отличие
от DL)?

И какие, позвольте узнать, "неожиданные свойства знаний" мы найдем,
если _явно укажем_, что Класс "Пол" не пересекается с Классом
"Балалайка"?

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

Насколько я понимаю, "дисджойнт" касается двух классов, а не одного.
Так что при определении каждого нового класса
дисджойнтов проставлять надо все больше и больше.

Это еще полбеды, но если они еще используются
исключительно как средство проверки целостности онтологии...

> Создание и
> тестирование одной такой онтологии (всего 50 классов) может занятъ
> человеко\месяц - но окупается засчет отсутствия надобности жесткого
> кодирования. Так что удачи в этом труде

А примеры создания / использования сложных онтологий в сложных (=
реальных)
задачах можно привести?

Спасибо,
Владимир

Mikhail Roshchin

unread,
Jun 11, 2009, 7:41:36 AM6/11/09
to webofdat...@googlegroups.com
@ Владимир,


Хотите ли Вы тем самым сказать, что логика первого порядка не
предназначена
для нахождения неожиданных свойств знаний (и в этом состоит ее отличие
от DL)?

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

И какие, позвольте узнать, "неожиданные свойства знаний" мы найдем,
если _явно укажем_, что Класс "Пол" не пересекается с Классом
"Балалайка"?

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

да все верно
 

Это еще полбеды, но если они еще используются
исключительно как средство проверки целостности онтологии...

нет конечно. есть еще классификация. плюс нестандартные выводы
 
А примеры создания / использования сложных онтологий в сложных (=
реальных)
задачах можно привести?


- диагностика: онтология в данном случае это схема взаимосвязей между симптомами и диагнозами - т.е. порядка 10-20 классов, а остальное - это база знаний, т.е. сами диагнозы и симптомы, соединенные между собой по схеме, заданной онтологией. задачи диагностики формулируются с помощью логического вывода задач "классификация" и "проверка на непротиворечивость" плюс, например, "абдукция"

- распознование ситуаций: аналогично

реальные внедрения - машиностроение, автоматизация, медицина и тп. в конечном продукте вы этого не видите - это из модулей системы, аггрегация данных, сохранение и функционал



Alexander Sidorov

unread,
Jun 16, 2009, 6:29:54 AM6/16/09
to webofdat...@googlegroups.com
@ Mikhail
Раз Вы говорите, что disjoint'ить все классы - нормальная практика, странно, что в OWL нет конструкции owl:allDisjoint (по аналогии с owl:allDifferent для экземпляров). А то приходится делать disjoint каждого класса с каждым - очень неудобно.

11 июня 2009 г. 16:43 пользователь Mikhail Roshchin <rosh...@gmail.com> написал:

Mikhail Roshchin

unread,
Jun 16, 2009, 7:49:41 AM6/16/09
to webofdat...@googlegroups.com
Ответ в данном случае достаточно простой: семантика такой конструкции allDisjoint достаточно не тривиально должна определяться: обозначает ли это для действиетльно ВСЕХ классов или только тех, которые определены параллельно. Т.е. счиатть ли, что это правило применимо также для всех сабклассов и надклассов? соответственно получается бред

2009/6/16 Alexander Sidorov <alex...@gmail.com>

Alexander Sidorov

unread,
Jun 16, 2009, 2:21:54 PM6/16/09
to webofdat...@googlegroups.com
Хм... owl:allDisjoint, на мой взгляд, должен был бы иметь семантику disjoint'а каждого с каждым. А уж влияет disjoint на подклассы/суперклассы или нет, должно определяться семантикой owl:disjointWith. Разве не логично?

16 июня 2009 г. 18:49 пользователь Mikhail Roshchin <rosh...@gmail.com> написал:

Mikhail Roshchin

unread,
Jun 17, 2009, 2:42:35 AM6/17/09
to webofdat...@googlegroups.com
не совсем: подклассы и суперклассы не могут быть по определению дисджойнт между собой. соответственно определяя дисджойнт для всех мы говорим, что у этого класса не м.б. больше ни предков, ни наследников. а исключения в описателньой логике явным образом задать нельзя. такой семантики не существует тоже

2009/6/16 Alexander Sidorov <alex...@gmail.com>

Alexander Sidorov

unread,
Jun 20, 2009, 2:26:13 PM6/20/09
to webofdat...@googlegroups.com
Михаил, скажу честно, Вашей глубокой мысли я не понял. Однако, оказывается, то, о чем я говорю, уже активно обсуждалось пару лет назад: http://www.w3.org/2007/OWL/tracker/issues/2 Написано, что в результате обсуждения allDisjoint был добавлен в функциональный синтаксис и RDF mapping. Но я так и не нашел, как allDisjoint можно представить в RDF...

Mikhail Roshchin

unread,
Jun 20, 2009, 4:10:07 PM6/20/09
to webofdat...@googlegroups.com
это глубокая мысль сказана в самом начале этой ссылки:
Since AllDisjoint is (important) syntactic sugar, the lack thereof essentially eliminates it from the 
RDF syntax. The trade-off is backwards compatibility. [But this is a desired backward
incompatability :)]
просто не стоит путать синтаксис овл (или рдф) и ту логику, которая стоит за ним. логика имеется в виду математическая


2009/6/20 Alexander Sidorov <alex...@gmail.com>

Михаил, скажу честно, Вашей глубокой мысли я не понял. Однако, оказывается, то, о чем я говорю, уже активно обсуждалось пару лет назад: http://www.w3.org/2007/OWL/tracker/issues/2 Написано, что в результате обсуждения allDisjoint был добавлен в функциональный синтаксис и RDF mapping. Но я так и не нашел, как allDisjoint можно представить в RDF...



Alexander Sidorov

unread,
Jun 21, 2009, 10:55:05 PM6/21/09
to webofdat...@googlegroups.com
>>просто не стоит путать синтаксис овл (или рдф) и ту логику, которая стоит за ним. логика имеется в виду математическая
Но ведь там написано: "RESOLUTION: AllDisjoint will be added to the functional syntax and the RDF mapping". RDF mapping, я так понимаю, - это представление AllDisjoint в RDF/OWL. Значит речь не только о математической логике, но и о представлении ее элемента - allDisjoint - в RDF/OWL. Или я неправильно трактую RDF mapping?

И еще мне непонятно утверждение об обратной совместимости. OWL развивается, появляются новые версии и, как мне кажется, ничто не мешает внедрить новую конструкцию. В чем тогда проблема?

Mikhail Roshchin

unread,
Jul 13, 2009, 7:39:48 AM7/13/09
to webofdat...@googlegroups.com
Сорри за долгое отсутствие - отпуск.

РДФ мэппинг - как раз для того и существует, чтобы использовать ОУЛ синтаксис _не_ с мат. логикой. Например, с разными rules languages. Поэтому если и будет добавлена конструкция - то это ничему не противоречит, все верно. ОУЛ 2, напирмер, уже в каокм то смысле пошел в этом направлении, разделив разные возможности в подклассы ОУЛ: ЕЛ, ДЛ, РЛ. т.е. чисто теоретически можно выдилть также отдельную конструкцию для моделирования аллдисджойнта и еще чего нить (балалаек ;) ), то, что к мат. выводу не будет иметь никакого отнощшения и будет использоваться для, например, чистого моделирования и потом последующего программирования. Все то, что имеет отношение к мат.выводу, будет уже развиваться по законом мат.логики и отвечать соответственно ее требованиям, в зависимости от той логики, короая используется


2009/6/22 Alexander Sidorov <alex...@gmail.com>

>>просто не стоит путать синтаксис овл (или рдф) и ту логику, которая стоит за ним. логика имеется в виду математическая
Но ведь там написано: "RESOLUTION: AllDisjoint will be added to the functional syntax and the RDF mapping". RDF mapping, я так понимаю, - это представление AllDisjoint в RDF/OWL. Значит речь не только о математической логике, но и о представлении ее элемента - allDisjoint - в RDF/OWL. Или я неправильно трактую RDF mapping?

И еще мне непонятно утверждение об обратной совместимости. OWL развивается, появляются новые версии и, как мне кажется, ничто не мешает внедрить новую конструкцию. В чем тогда проблема?



Reply all
Reply to author
Forward
0 new messages