Búho - ¿Proteger no inferir correctamente? ¿Cómo definir precisamente una clase “vegetariana”?

He estado estancado durante dos días tratando de entender por qué el siguiente escenario no funciona:

capturas de pantalla aquí:http://dl.dropbox.com/u/4677548/screenshots.html

Tengo una clase de VegetarianFood (subclase de Food) que es equivalente a "Food and (Eggs o MilkAndDerivates o VeganFood)" como se puede ver en la captura de pantalla número 1

La clase de VeganFood, a su vez, es equivalente a otras clases (NutsAndSeeds, Cereals, Fruit, etc ...) captura de pantalla 2

Como puede ver, hay dos individuos (queso cheddar y anacardo) creados como MilkAndDerivates and NutsAndSeeds captura de pantalla 3 y se infieren correctamente como miembro de VegetarianFood y VeganFood

Luego creé dos individuos como recetas, uno solo con anacardo (PastaVega) y otro con cheddar chese y anacardo (PastaVege), utilizando la propiedad de objeto hasIngredient captura de pantalla 4 y 5

y se han deducido como Receta ... PERO ninguno cae en la categoría de Receta de Vegatarian y Receta de Vegan, que se define a continuación: captura de pantalla 6 y 7

No tengo pistas, ¿Por qué no se deducen como VegetarianRecipe (o vegan)? ¿Qué me estoy perdiendo?

Editar:

Si cambio VegetarianRecipe (o vegan) de "Recipe and (hasIngredient ONLY VegetarianFood)"

a "Receta y (hasIngrediente ALGUNA Comida Vegetariana)"

captura de pantalla 8

Las recetas se muestran a los individuos, pero, por supuesto, esto no es lo que estoy tratando de hacer, ya que de esta manera incluirá recetas con carne mixta y comida vegetariana. Entonces, ¿cómo definir una clase de receta vegetariana y receta vegana para que el razonador pueda inferir correctamente cuando una receta es vegetariana o vegana?

Respuestas a la pregunta(1)

Su respuesta a la pregunta