Я не совсем понимаю ваш вопрос, но постараюсь прояснить некоторые вещи.Прежде всего, следующие аксиомы кажутся неуместными для вашего вопроса (а вторая в любом случае избыточна, поскольку 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
-аксиомы.