Rdf OWL中等价类和子类的混合

Rdf OWL中等价类和子类的混合,rdf,owl,description-logic,Rdf,Owl,Description Logic,我很好奇在类描述中混合SubClassOf和EquivalentClass,以及推理器的行为 具体地说,如果我对同一个类同时有一个EquivalentClass和一个SubClassOf断言,那么需要同时满足EquivalentClass和SubClassOf条件才能将个人归类到该类中,还是只满足EquivalentClass 或者这是一种不好的做法 例如(省略声明): 我想确保在以下情况下,:x被分类为:Foo,因为同时满足等价类和子类断言: ClassAssertion(:x :Sna) O

我很好奇在类描述中混合SubClassOf和EquivalentClass,以及推理器的行为

具体地说,如果我对同一个类同时有一个EquivalentClass和一个SubClassOf断言,那么需要同时满足EquivalentClass和SubClassOf条件才能将个人归类到该类中,还是只满足EquivalentClass

或者这是一种不好的做法

例如(省略声明):

我想确保在以下情况下,
:x
被分类为
:Foo
,因为同时满足等价类和子类断言:

ClassAssertion(:x :Sna)
ObjectPropertyAssertion(:format :x :someBar)
ClassAssertion(:y :NotASna)
ObjectPropertyAssertion(:format :y :someOtherBar)
但是
:y
不是,因为子类不满足:

ClassAssertion(:x :Sna)
ObjectPropertyAssertion(:format :x :someBar)
ClassAssertion(:y :NotASna)
ObjectPropertyAssertion(:format :y :someOtherBar)
谢谢


乔纳森

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

另一件事是,
等价类
-公理可以被看作是
子类
-公理的语法糖,例如

EquivalentClasses(C1 C2)
逻辑上等同于

SubClassOf(C1 C2)
SubClassOf(C2 C1)
因此,您可以将
等效类重写为:

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))
等效类
-axiom开始