在OWL中混合EquivalentClass和SubClass

时间:2010-12-21 12:47:06

标签: rdf owl description-logic

我很想知道在Class描述中混合使用SubClassOf和EquivalentClass,以及推理器的行为方式。

具体来说,如果同时为同一个类同时拥有一个EquivalentClass和一个SubClassOf断言,那么同一个类和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 个答案:

答案 0 :(得分:2)

我不完全理解你的问题,但我会尝试澄清一些事情。首先,下面的公理似乎与你的问题无关(而第二个公正是多余的,因为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

后面是{{1}} - 公理。