2017-04-11 79 views
1

我正在尝试使用Protege创建一个OWL本体。我想使用反函数性质与关系数据库中的主键的相似性。例如,我有一个属性,它有一个唯一的id作为对象,从而识别该实体,并且不应允许其他实体将该值与该属性一起使用。OWL:为什么数据属性不能是一个反函数属性?

作为对象值,它必须是一个数据属性。但是在Protege中,您不能将反向功能特性分配给数据属性。

为什么我不能宣布数据属性是一个反函数性质,我应该怎么回事打造“唯一密钥”的逻辑,如果不是这样?

由于提前,
弗兰克

+1

Antoine Zimmermann给出了完整的解释。简而言之,如果一个数据类型属性是反功能的,则文字可以成为三元组的主题 - 这是不允许的。 – Ignazio

+0

只需使用键的OWL 2功能:https://www.w3.org/TR/owl2-new-features/#F9:_Keys – AKSW

+0

Ignazio,你不会混淆'owl:inverseOf'和'owl:InverseFunctionalProperty' ?无论如何,不​​允许的原因与这种句法限制无关。在OWL Full中,即使在数据类型属性上也允许反函数属性,并且即使文本不能是三元组的主题,也可以在OWL Full中定义数据类型属性的反函数。 –

回答

5

的限制对数据类型的属性纯粹是由于计算复杂度。没有这个限制,OWL 2 DL的逻辑将不会被确定。但是,它可能表达独特的密钥的概念在OWL 2:

ex:key a owl:DatatypeProperty . 
owl:Thing owl:hasKey (ex:key) . 

但是,这和反函数性质之间的细微差别。考虑以下几点:

ex:this a [ 
    a owl:Restriction; 
    owl:onProperty ex:prop; 
    owl:minCardinality 2; 
    owl:onClass [ 
     a owl:Restriction; 
     owl:onProperty ex:key; 
     owl:hasValue 1 
    ] 
] . 

如果ex:keyowl:Thing的关键,那么这个本体是一致的。但是,如果ex:key可能是一个反函数属性,那么这个本体将不一致。原因是由于在OWL 2中键的工作方式。对于识别某些内容的键,必须明确命名。可能有几个具有相同密钥的未命名事物(这里的关键是数字1),但只要它们没有在本体中明确声明,它们就不会被认为是平等的。但是,具有反函数性质的情况并非如此。因此,我们可以推断,属性ex:key上的所有值为1的东西都是相同的东西,因此ex:this对于属性ex:prop不能有2个值。

+0

非常感谢Antoine的回复!如果我的理解正确...在OWL中,我可以**使数据属性反函数属性?我如何告诉Protege将我的OWL本体扩展为OWL(从而允许我使数据属性反转)? 第二,如何定义与Protege的owl:hasKey关系? – Aaginor

相关问题