EquivalentClass和SubClass有什么区别?在阅读OWL入门时,我发现教程使用SubClassOf来声明一个新类,如下所示
SubClassOf(
:Teenager
DataSomeValuesFrom( :hasAge
DatatypeRestriction( xsd:integer
xsd:minExclusive "12"^^xsd:integer
xsd:maxInclusive "19"^^xsd:integer
)
)
)
我可以写
吗?EquivalentClass(
:Teenager
DataSomeValuesFrom( :hasAge
DatatypeRestriction( xsd:integer
xsd:minExclusive "12"^^xsd:integer
xsd:maxInclusive "19"^^xsd:integer
)
)
)
代替?
答案 0 :(得分:20)
当说明A
是 B
的子类时,这会限制A
必须继承B
的所有特征,但不是相反的方式。在您的示例中,A
= Teenager
和B
= hasAge [12:19]
(我自己的符号,但您明白了)。
这意味着OWL本体中Teenager
的任何实例都必须具有属性hasAge
,其值的范围为[12:19]
,但 不是< / em>相反的方式。具体而言,这并不意味着具有属性hasAge
且值[12:19]
范围内的值的任何实例也是Teenager
的实例。为清楚起见,请考虑类c
的实例(称为Car
)。我们也可以这样说:
c . hasAge 13
这表示c
的实例Car
已有13年历史。但是,通过上面定义Teenager
的子类公理,推理器会不推断c
也是Teenager
的实例(也许正如我们想要的那样,如果青少年是人,而不是汽车)。
使用等价时的区别在于暗示子类关系进入两个方向。因此,如果我们要将第Teenager
定义为等效的第二个公理包含属性为hasAge
且值为[12:19]
的任何内容,然后推理人会推断汽车c
也是Teenager
的实例。
答案 1 :(得分:3)
等效类可能具有相同的成员,例如
:USPresident owl:equivalentClass :USCommanderInChief
将拥有相同的人(全部或部分美国总统)。因此,如果我们断言约翰亚当斯是USCommanderInChief,可以推断约翰亚当斯也是美国总统。
对于子类,我们指示一个层次结构。例如,GrannySmithApple是一种Apple。
答案 2 :(得分:1)
:USPresident owl:equivalentClass :USCommanderInChief .
与
相同:USPresident rdfs:subClassOf :USCommanderInChief ;
:USCommanderInChief rdfs:subClassOf :USPresident .