Смешивание эквивалентного класса и подкласса в сове

StackOverflow https://stackoverflow.com/questions/4499387

  •  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-Кома.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top