Смешивание эквивалентного класса и подкласса в сове
-
12-10-2019 - |
Вопрос
Мне любопытно смешать подкласс и эквивалентный класс в описании класса, и о том, как будет вести себя разумный.
В частности, если у меня есть как эквивалентный класс, так и подклассное утверждение для одного и того же класса, должны быть удовлетворены как эквивалентный класс, так и подклассные условия для классификации человека в этом классе, или только эквивалентный класс?
Или это плохая практика?
Например (объявления опущены):
ObjectPropertyRange(:format :Bar)
ObjectPropertyRange(:format owl:Thing)
EquivalentClass(:Foo ObjectSomeValuesFrom(:format :Bar))
SubClassOf(:Foo :Sna)
Я хочу убедиться, что в случае ниже, :x
классифицируется как :Foo
, потому что как эквивалентные, так и подклассные утверждения удовлетворены:
ClassAssertion(:x :Sna)
ObjectPropertyAssertion(:format :x :someBar)
Но :y
не так, потому что подкласс не удовлетворен:
ClassAssertion(:y :NotASna)
ObjectPropertyAssertion(:format :y :someOtherBar)
Спасибо,
Джонатан
Решение
Я не совсем понимаю ваш вопрос, но постараюсь прояснить некоторые вещи. Прежде всего, следующие аксиомы кажутся неактуальными для вашего вопроса (а второй в любом случае избыточно, потому что 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
-Кома.