我正在尝试使用Protege创建一个OWL本体。我想使用反函数性质与关系数据库中的主键的相似性。例如,我有一个属性,它有一个唯一的id作为对象,从而识别该实体,并且不应允许其他实体将该值与该属性一起使用。OWL:为什么数据属性不能是一个反函数属性?
作为对象值是串,它必须是一个数据属性。但是在Protege中,您不能将反向功能特性分配给数据属性。
为什么我不能宣布数据属性是一个反函数性质,我应该怎么回事打造“唯一密钥”的逻辑,如果不是这样?
由于提前,
弗兰克
我正在尝试使用Protege创建一个OWL本体。我想使用反函数性质与关系数据库中的主键的相似性。例如,我有一个属性,它有一个唯一的id作为对象,从而识别该实体,并且不应允许其他实体将该值与该属性一起使用。OWL:为什么数据属性不能是一个反函数属性?
作为对象值是串,它必须是一个数据属性。但是在Protege中,您不能将反向功能特性分配给数据属性。
为什么我不能宣布数据属性是一个反函数性质,我应该怎么回事打造“唯一密钥”的逻辑,如果不是这样?
由于提前,
弗兰克
的限制对数据类型的属性纯粹是由于计算复杂度。没有这个限制,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:key
是owl:Thing
的关键,那么这个本体是一致的。但是,如果ex:key
可能是一个反函数属性,那么这个本体将不一致。原因是由于在OWL 2中键的工作方式。对于识别某些内容的键,必须明确命名。可能有几个具有相同密钥的未命名事物(这里的关键是数字1
),但只要它们没有在本体中明确声明,它们就不会被认为是平等的。但是,具有反函数性质的情况并非如此。因此,我们可以推断,属性ex:key
上的所有值为1
的东西都是相同的东西,因此ex:this
对于属性ex:prop
不能有2个值。
非常感谢Antoine的回复!如果我的理解正确...在OWL中,我可以**使数据属性反函数属性?我如何告诉Protege将我的OWL本体扩展为OWL(从而允许我使数据属性反转)? 第二,如何定义与Protege的owl:hasKey关系? – Aaginor
Antoine Zimmermann给出了完整的解释。简而言之,如果一个数据类型属性是反功能的,则文字可以成为三元组的主题 - 这是不允许的。 – Ignazio
只需使用键的OWL 2功能:https://www.w3.org/TR/owl2-new-features/#F9:_Keys – AKSW
Ignazio,你不会混淆'owl:inverseOf'和'owl:InverseFunctionalProperty' ?无论如何,不允许的原因与这种句法限制无关。在OWL Full中,即使在数据类型属性上也允许反函数属性,并且即使文本不能是三元组的主题,也可以在OWL Full中定义数据类型属性的反函数。 –