OWL等效类的空白节点

时间:2015-12-14 20:37:57

标签: rdf owl semantic-web blank-nodes

为什么需要一个空白节点来定义OWL中的等效类?以下两个不相等吗?

:Wine owl:equivalentClass [
      a owl:Class ;
      owl:unionOf (:RedWine :RoséWine :WhiteWine) ] .

:Wine a owl:Class .
:Wine owl:unionOf (:RedWine :RoséWine :WhiteWine) .

1 个答案:

答案 0 :(得分:1)

不支持此缩写

这与Why use owl:Restriction as own:EquivalenceClass's property?不完全相同,但答案大致相同:从RDF到OWL的映射定义为这样的缩写不会产生你想要的本体您将RDF映射到OWL。不管你是否最终有歧义,我都不确定。但是,您不会最终得到您想要的本体。从RDF到OWL的相关翻译说,当你有:

_:x rdf:type owl:Class .
_:x owl:unionOf T(SEQ y1 ... yn) .
{ n ≥ 2 and CE(yi) ≠ ε for each 1 ≤ i ≤ n }

你得到一个类表达式, ObjectUnionOf(CE(y1)... CE(yn))。根据{{​​3}},首先解析表达式,然后解析公理。重要的是,“每次匹配一个模式时,都会从G中删除匹配的三元组。”这意味着我们将表达式解析为RDF:

:Wine rdf:type owl:Class .
:Wine owl:unionOf (:RedWine :RoséWine :WhiteWine) .

我们得到类表达式RedWine∪RoseWine∪WhiteWine,我们从图表中删除三元组。稍后,在3.2.4 Parsing of Expressions中,我们开始寻找?x rdf:type owl:Class 的实例,以获得声明公理声明(Class(?x) ))即可。但是,当我们解析unionOf表达式时,我们删除了:Wine rdf:type owl:Class 。现在我们没有将Wine作为本体中的一类。

思想

现在,缩写不起作用的原因是因为翻译不支持它。翻译在遇到它们时会从图形中删除三元组,并且它会首先删除表达式,这样就会为声明公理留下必要的三元组。但是,我们可以想象一个没有删除它们的翻译公理;它可能只是解析表达式,然后解析公理。我认为你所描述的缩写就是那个

:A owl:equivalentClass :B .
:B ?p ?o .

可以替换为:

:A ?p ?o .

只要对所有?p?o 完成:B有。这可能不是 unionOf 表达式的问题,因为每个 unionOf 表达式都需要一个?p?o (其中?p < / strong>是 owl:unionOf ?o 是RDF列表)。但是,对于任何需要多个三元组的类表达式,如果存在多个相同类型的等效类表达式,则可能会变得模糊不清。例如,如果你有三元组

_:x rdf:type owl:Restriction .
_:x owl:onProperty y .
_:x owl:someValuesFrom z .

指定 someValuesFrom 限制,然后只要你有两个限制,你就无法知道 owl:onProperty 与哪个强>猫头鹰:someValuesFrom类似即可。这是3.2.5 Parsing of Axioms中出现的问题如果 owl:unionOf 的编码方式略有不同,则会出现同样的问题。例如,如果A∪B由以下编码:

_:x rdf:type owl:Class .
_:x owl:unionMember :A .
_:x owl:unionMember :B .
如果你试图对公理进行编码,那么你会遇到歧义:

A≡B∪C
A≡D∪E

你会得到编码:

:A rdf:type owl:Class .
:A owl:unionMember :B .
:A owl:unionMember :C .
:A owl:unionMember :D .
:A owl:unionMember :E .

你可以回读为:

A≡B∪C∪D∪E

在逻辑上不等同。