2015-03-26 6 views
2

Скажем, например:Экземпляр объекта объекта класса?

-Food(class 
-Bread(instance of Food! 
-Species(class 
    -Animal(class 
    - Horse(class 
     -Unicorn(instance 

Теперь мне нужно, чтобы быть в состоянии установить хлеб -> eatableBy -> Лошадь. Но я не могу сделать утверждение свойства объекта классу. Поэтому я мог бы установить его съедобным и добавить все экземпляры Лошади, но у меня много примеров, так что это будет немного лишним. Кто-нибудь знает хороший эффективный способ добиться такого же эффекта?

E.g. Если мне нужно знать, что Лошади могут съесть, ему также нужно вернуть Хлеб. Если я хочу знать всю еду, которую едят Единорог, ей нужно вернуть Хлеб (потому что это лошадь, и все лошади едят хлеб). Если мне нужно знать, какие подклассы Животные едят, он также должен вернуть Хлеб.

+0

Есть ли конкретная причина, по которой вы не хотите, чтобы хлеб был классом? – Artemis

+0

Ну, это особый вид пищи, а также свойства данных и свойства объекта, которые класс не может иметь. –

ответ

3

Если я вас правильно понимаю, у вас есть экземплярХлеб и хотите, чтобы убедиться, что это съедобные каждым экземпляром класса лошадь. OWL имеет ограничения стоимости, которые позволяют описать набор лиц, которые стоят в некотором отношении к определенному значению. Например, выражение

                любит значение Pizza

класс всех людей, которые любят пиццу. OWL также позволяет использовать обратные свойства, так что выражение

                обратной (любит) значение Джо

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

                Лошадь SubClassOf canEat значение Хлеб

сказать, что каждый человек типа лошадь может есть отдельные хлеб. Однако, вместо свойства canEat, у вас есть свойство eatableBy.Это как раз обратное canEat, хотя, так что вы можете сказать, что каждый человек типа Лошадь может есть отдельные Хлеб с аксиомой:

                Лошадь SubClassOfобратного (eatableBy) значение Хлеб

В протеже, который выглядит следующим образом:

protege screenshot

+0

Спасибо за ваш ответ. Я устанавливаю правило подкласса, но при запросе uni: Horse canEat? Y не дает результатов. Также запрос uni: Bread uni: eatableBy? Y не дает результата. Пробовал это с помощью SPARQL и Snap SPARQL –

+0

@vincentkleine Аксиома «Лошадь SubClassOf (съедобная ценность Хлеба)» * * * говорит, что Хлеб съедобен на каждом экземпляре Лошади, и разумник сможет это подтвердить. Итак, пара вопросов: 1. Есть ли у вас какие-либо примеры Лошадей? 2. У вас есть аргумент-аргумент? 3. Использует ли используемый вами механизм SPARQL результаты рассуждений? –

+0

Я пытался запросить uni: Horse (class) uni: canEat? Y, теперь я вижу, когда я запрашиваю uni: Unicorn (экземпляр лошади) uni: canEat? Y дает правильный результат. Чтобы определить, что может съесть лошадь или животное (суперкласс Лошади), мне просто нужно спросить, что такое лошади, или могут ли предметы подкласса Животные есть. Так что спасибо, он работает сейчас! –

Смежные вопросы