2012-04-28 35 views
5

Tôi đã bị mắc kẹt trong hai ngày nay cố gắng tìm hiểu tại sao các tình huống sau không hoạt động:owl - protege không suy luận chính xác? làm thế nào để xác định chính xác một lớp học "ăn chay"?

ảnh chụp màn hình ở đây: http://dl.dropbox.com/u/4677548/screenshots.html

Tôi có một lớp VegetarianFood (lớp con của thực phẩm) có nghĩa là tương đương với "Food và (Trứng hoặc MilkAndDerivates hoặc VeganFood) "như bạn có thể thấy trong ảnh chụp màn hình số 1

Lớp VeganFood, tương đương với các lớp khác (NutsAndSeeds, Ngũ cốc, Trái cây, vv ...) ảnh chụp màn hình 2

khi bạn ca n thấy có hai cá nhân (cheddar cheese và điều) tạo ra như MilkAndDerivates và NutsAndSeeds ảnh chụp màn hình 3 và họ được suy ra một cách chính xác như thành viên VegetarianFood và VeganFood

Sau đó, tôi đã tạo ra hai cá nhân như công thức nấu ăn, người duy nhất với điều (PastaVega) và một với cheddar chese và điều (PastaVege), sử dụng thuộc tính đối tượng hasIngredient ảnh chụp màn hình 4 và 5

và chúng được suy ra như Công thức ... NHƯNG không rơi vào danh mục VegatarianRecipe và VeganRecipe, được định nghĩa như sau ảnh chụp màn hình 6 và 7

Tôi không có manh mối, Tại sao họ không suy luận như VegetarianRecipe (hoặc thuần chay) ?? Tôi đang thiếu gì?

Edit:

Nếu tôi thay đổi VegetarianRecipe (hoặc thuần chay) từ "Recipe và (hasIngredient CHỈ VegetarianFood)"

để "Recipe và (hasIngredient MỘT SỐ VegetarianFood)"

ảnh chụp màn hình 8

các cá nhân recepies được hiển thị, nhưng tất nhiên đây không phải là những gì tôi đang cố gắng làm, như trong cách này nó sẽ bao gồm các công thức nấu ăn với thịt hỗn hợp và chayĐồ ăn. Vì vậy, làm thế nào để xác định một lớp chay chay và veganrecipe để cho phép các lý do để suy ra một cách chính xác khi một công thức là ăn chay hoặc ăn chay ????

+0

"Liên kết" bạn đã cung cấp cho ảnh chụp màn hình sẽ chỉ hoạt động trên máy tính của bạn. Bạn cần phải tải chúng lên một cái gì đó như imgur.com đầu tiên. – jwodder

Trả lời

6

Bạn đã gặp phải hậu quả của thực tế là lý do OWL sử dụng giả định mở thế giới.

Lý do recipe PastaVege của bạn không được suy ra là một VegetarianRecipe là, mặc dù các thành phần mà bạn một cách rõ ràng liệt kê trong công thức có thực sự tất cả VegeratianFood trường hợp, nó cũng có thể là một số thành phần hiện không rõ của công thức nấu ăn của bạn không phải là một thức ăn chay.

Kể từ khi chế của bạn trên VegetarianRecipetất cả các thành phần nên VegetarianFoods (không chỉ là những người chúng ta hiện biết về), nó có thể không được dứt khoát kết luận (trong một thế giới mở) mà công thức của bạn thực sự là một VegetarianRecipe.

Có một số cách để giải quyết vấn đề này, nhưng không có cách nào thực sự làm chính xác những gì bạn muốn - bạn cần tiếp cận nó từ một góc hơi khác.

Nếu không đi vào chi tiết mô hình chính xác: mặc dù việc suy luận là một công thức nấu ăn không phải là ăn chay; bất kỳ công thức nào có ít nhất một thành phần không ăn chay là một công thức không ăn chay.

Một cách tiếp cận khác là bạn tạo một tập hợp các thành phần (ăn chay) (sử dụng lớp được liệt kê OWL qua ràng buộc oneOf), nhưng đó là một thay đổi đáng kể đối với mô hình của bạn, và tất nhiên là tẻ nhạt liệt kê tất cả các thành phần có thể có trong thời trang này.

Các vấn đề liên quan