2012-04-28 2 views
5

я застрял в течение двух дней теперь пытаюсь понять, почему следующий сценарий не работает:owl - протеже не вывел правильно? как точно определить класс «вегетарианский»?

скриншоты здесь: http://dl.dropbox.com/u/4677548/screenshots.html

У меня есть класс VegetarianFood (подкласс Food), что эквивалентно «еда и (яйца или MilkAndDerivates или VeganFood)», как вы можете видеть на скриншоте номером 1

класс VeganFood, на свою очередь, эквивалентно другим классам (NutsAndSeeds, злаки, фрукты и т.д. ...) Скриншот 2

как вы п см есть два человека (сыр чеддер и кешью), созданные как MilkAndDerivates и NutsAndSeeds Скриншот 3 и они правильно выведены в качестве члена VegetarianFood и VeganFood

Затем я создал два человека, как рецепты, один только с кешью (PastaVega) и один с обоими чеддер chese и кешью (PastaVege), используя свойство объекта hasIngredient Скриншот 4 и 5

и они были выведены в рецепте ... НО никто не попадает в категорию VegatarianRecipe и VeganRecipe, определяется следующим образом скриншот 6 и 7

У меня нет никаких подсказок, почему они не выводятся как Вегетарианская Репец (или веган)? Что мне не хватает?

Edit:

Если изменить VegetarianRecipe (или веганский) от "Рецепт и (hasIngredient ТОЛЬКО VegetarianFood)"

к "Рецепт и (hasIngredient НЕКОТОРЫХ VegetarianFood)"

скриншот 8

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

+0

«Ссылка», которую вы передали на скриншоты, будет работать только на вашем компьютере. Сначала вам нужно загрузить их на что-то вроде imgur.com. – jwodder

ответ

6

Вы столкнулись с последствием того факта, что рассуждение OWL использует предположение открытого мира.

Причины ваш PastaVege рецепт не предполагается, чтобы быть VegetarianRecipe является то, что, хотя ингредиенты, которые вы явно перечислить в рецепте действительно все VegeratianFood случаев, это вполне может быть, что некоторые в настоящее время неизвестно ингредиент вашего рецепта не Вегетарианская еда.

Поскольку ваше ограничение на VegetarianRecipeявляется то, что все ингредиенты должны быть VegetarianFoods (а не только те, которые мы в настоящее время знаем о), он не может быть окончательно пришел к выводу (в открытом мире), что ваш рецепт действительно VegetarianRecipe.

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

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

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