Смешивание EquivalentClass и SubClass в OWL - PullRequest
0 голосов
/ 21 декабря 2010

Мне любопытно, как смешать SubClassOf и EquivalentClass в описании класса, и как поведет себя аргументатор.

В частности, если у меня есть утверждение EquivalentClass и SubClassOf для одного класса, выполнитеEquivalentClass И условия SubClassOf должны быть выполнены для того, чтобы лицо было классифицировано в этом классе, или только EquivalentClass?

Или это плохая практика?

Например (объявления опущены):

ObjectPropertyRange(:format :Bar)
ObjectPropertyRange(:format owl:Thing)
EquivalentClass(:Foo ObjectSomeValuesFrom(:format :Bar))
SubClassOf(:Foo :Sna)

Я хочу убедиться, что в приведенном ниже случае :x классифицируется как :Foo, потому что оба утверждения EquivalentClass и SubClassOf удовлетворяются:

ClassAssertion(:x :Sna)
ObjectPropertyAssertion(:format :x :someBar)

Но :y нет, поскольку SubClassOf не выполняется:

ClassAssertion(:y :NotASna)
ObjectPropertyAssertion(:format :y :someOtherBar)

Спасибо,

Джонатан

1 Ответ

2 голосов
/ 21 декабря 2010

Я не совсем понимаю ваш вопрос, но постараюсь прояснить некоторые вещи.Прежде всего, следующие аксиомы кажутся неуместными для вашего вопроса (а вторая в любом случае избыточна, поскольку owl:Thing - это диапазон любого свойства):

ObjectPropertyRange(:format :Bar)
ObjectPropertyRange(:format owl:Thing)

Другое дело, что EquivalentClasses -аксиомы могутможно рассматривать как синтаксический сахар для SubClassOf -аксиом, например,

EquivalentClasses(C1 C2)

логически эквивалентен

SubClassOf(C1 C2)
SubClassOf(C2 C1)

Так что вы можете переписать свой EquivalentClasses как:

SubClassOf(ObjectSomeValuesFrom(:format :Bar) :Foo)
SubClassOf(:Foo ObjectSomeValuesFrom(:format :Bar))

Это могло бы упростить понимание того, что влечет за собой ваша онтология.

Теперь, если вы скажете:

ClassAssertion(:x :Sna)
ObjectPropertyAssertion(:format :x :someBar)

Я предполагаю, что вы хотите сказать:

ClassAssertion(:x :Sna)
ClassAssertion(:someBar :Bar)
ObjectPropertyAssertion(:format :x :someBar)

Это означает, что :x является одновременно :Foo и :Sna, что, безусловно, возможно, поскольку :Foo является подклассом :Sna.

Когда вы говорите

ClassAssertion(:y :NotASna)
ObjectPropertyAssertion(:format :y :someOtherBar)

Я предполагаю, что вы имеете в виду:

ClassAssertion(:y :NotASna)
ClassAssertion(:someOtherBar :Bar)
DisjointClasses(:NotASna :Sna)
ObjectPropertyAssertion(:format :y :someOtherBar)

Это логическое несоответствие, потому что :y подразумевается как :Foo (который является подклассом :Sna), нов то же время утверждается, что :y входит в класс, который не пересекается с :Sna.

Обратите внимание, что мы неНе используйте знания, которые

SubClassOf(:Foo ObjectSomeValuesFrom(:format :Bar))

, которые следуют из EquivalentClasses -аксиомы.

...