0

我很好奇在类描述中混合 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)

谢谢,

乔纳森

4

1 回答 1

2

我不完全理解你的问题,但我会尝试澄清一些事情。首先,以下公理似乎与您的问题无关(第二个公理无论如何都是多余的,因为owl:Thing它是任何属性的范围):

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

另一件事是EquivalentClasses-axioms 可以看作是 -axioms 的语法糖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必然是 a :Foo(它是 的子类:Sna),但同时又:y被断言在与 不相交的类中:Sna

另请注意,我们没有使用以下知识

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

EquivalentClasses-axiom 开始。

于 2010-12-21T14:42:17.093 回答