сова протеже, как я могу описать класс, у которого есть только некоторые свойства?

Можно ли в протеже (таким образом, в сове) описать класс в зависимости от того, есть ли у него какие-то свойства?

Например

У меня есть класс Home, и я хочу сказать, что каждый экземпляр, имеющий property1, property2 и property2, считается экземпляром этого класса?


person Marco Dinatsoli    schedule 18.04.2015    source источник


Ответы (1)


Предположим, у вас есть класс Утка, и вы хотите сказать, что если что-то ходит как утка и говорит как утка, то это и есть утка. Вы можете сделать это с помощью аксиомы класса:

((гуляет как какая-то утка) и (говорит как какая-то утка)) SubClassOf утка

Подобная аксиома подкласса, где левая часть представляет собой не просто имя класса, а сложное выражение класса, называется общей аксиомой класса. Вы можете ввести их в Protégé на вкладке Активная онтология:

Общая аксиома класса в Protege

Чтобы узнать больше об общих аксиомах классов, вы можете найти Сложность в левой части: включение общих понятий< /em> полезно.

person Joshua Taylor    schedule 19.04.2015
comment
Большое спасибо, но я искал что-то другое. Во-первых, например, у меня есть имя для этого класса, но в вашем случае у класса нет имени. Во-вторых, я не знаю значения отношения (свойства), и меня не волнует значение, меня просто волнует, что у экземпляра действительно есть это свойство, и этого мне достаточно, не могли бы вы помочь? - person Marco Dinatsoli; 19.04.2015
comment
Если у вас есть имя для вашего класса, вы можете обратить аксиому, описанную Джошуа: YourClassName SubClassOf (talksLike some Duck); если тип наполнителя неважен, т.е. вам все равно, что это Утки, то вместо него можно использовать Вещь. YourClassName SubClassOf (talksLike some Thing); - person Ignazio; 19.04.2015
comment
@MarcoDinatsoli Что из следующего вы пытаетесь сказать: (i) ЕСЛИ что-то имеет значения для свойств P1 и P2, ТОГДА это экземпляр C.; или (ii) ЕСЛИ что-то является экземпляром C, ТО имеет значения для свойств P1 и P2? - person Joshua Taylor; 19.04.2015
comment
@JoshuaTaylor первый, но, говоря более точно, я пытаюсь определить класс, все его экземпляры имеют значение (случайное значение) для двух свойств, и я знаю имя класса. (обратите внимание, я могу использовать эквивалент, но в задании я не могу использовать прямой подкласс) - person Marco Dinatsoli; 20.04.2015
comment
@MarcoDinatsoli Ну, если вам нужно только одно направление (если A, то B, но не если B, то A), вам нужны отношения подкласса. Эквивалентные классовые отношения всегда дают вам оба направления. Ограничение some не указывает конкретное значение, а указывает только на то, что есть какое-то значение из определенного класса. Например, (Human subClassOf (hasMother some Human)) не указывает чью-либо конкретную мать, а просто говорит, что у каждого человека есть мать-человек. Во всяком случае, вместо (walksLike some Duck) вы можете сказать (walksLike some Thing), поскольку все индивидуумы являются вещами, или (walksLike min 1). - person Joshua Taylor; 20.04.2015
comment
@JoshuaTaylor Я попробовал ваше предложение, так как это and (hasGarden min 1 ) and (hasSwimmingPool value true), где hasGarden имеет логическое значение диапазона, и я получил ошибку в протеже, я не мог нажать «ОК», пока не изменю его на and (hasGarden min 1 boolean ) and (hasSwimmingPool value true), это правильно, пожалуйста? - person Marco Dinatsoli; 20.04.2015
comment
@Marco Марко А, я думал, ты используешь свойства объекта; да, для свойств типа данных вам может потребоваться указать тип данных. Но (hasSwimmingPool value true) говорит, что фактическое значение для hasSwimmingPool будет истинным, а не только то, что существует значение для hasSwimmingPool. Ранее вы сказали Я не знаю значения отношения (свойства), и меня не волнует значение, меня просто волнует, действительно ли у экземпляра есть это свойство, поэтому, вероятно, следует be (hasSwimmingPool какое-то логическое значение) или (hasSwimmingPool min 1 boolean) [они эквивалентны]. - person Joshua Taylor; 20.04.2015