Properties 猫头鹰:为什么能';数据属性不是反函数属性吗?

Properties 猫头鹰:为什么能';数据属性不是反函数属性吗?,properties,owl,ontology,modeling,protege,Properties,Owl,Ontology,Modeling,Protege,我正在尝试使用Protege创建一个OWL本体。我想使用逆函数属性作为关系数据库中主键的相似性。例如,我有一个属性,该属性具有唯一的id作为对象,因此可以标识实体,不允许其他实体将此值与该属性一起使用 由于对象值是一个字符串,因此它必须是一个数据属性。但在Protege中,您不能将反向功能特性指定给数据属性 为什么我不能将数据属性声明为逆函数属性,如果不是这样,我应该如何创建“唯一键”逻辑 提前感谢, Frank对数据类型属性的限制纯粹是由于计算复杂性。如果没有限制,OWL2DL的逻辑将不可判定

我正在尝试使用Protege创建一个OWL本体。我想使用逆函数属性作为关系数据库中主键的相似性。例如,我有一个属性,该属性具有唯一的id作为对象,因此可以标识实体,不允许其他实体将此值与该属性一起使用

由于对象值是一个字符串,因此它必须是一个数据属性。但在Protege中,您不能将反向功能特性指定给数据属性

为什么我不能将数据属性声明为逆函数属性,如果不是这样,我应该如何创建“唯一键”逻辑

提前感谢,

Frank

对数据类型属性的限制纯粹是由于计算复杂性。如果没有限制,OWL2DL的逻辑将不可判定。但是,可以在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
可能是一个反函数属性,那么这个本体将不一致。原因是由于键在OWL2中的工作方式。对于标识某事物的键,该事物必须显式命名。可能有几个未命名的东西具有相同的键(这里,键是数字
1
),但是,只要它们没有在本体中明确声明,它们就不会被认为是相等的。然而,对于逆函数性质,情况并非如此。因此,我们可以推断,在属性
ex:key
上具有值
1
的所有内容都是相同的,因此,
ex:this
不能为属性
ex:prop

对数据类型属性的限制纯粹是由于计算复杂性。如果没有限制,OWL2DL的逻辑将不可判定。但是,可以在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
可能是一个反向函数属性,那么该本体将不一致。原因是由于键在OWL2中的工作方式。对于标识某事物的键,该事物必须显式命名。可能有几个未命名的东西具有相同的键(这里,键是数字
1
),但是,只要它们没有在本体中明确声明,它们就不会被认为是相等的。然而,对于逆函数性质,情况并非如此。因此,我们可以推断,在属性
ex:key
上具有值
1
的所有内容都是相同的,因此,
ex:this
不能具有属性
ex:prop

的2个值,Antoine Zimmermann已经给出了完整的解释。简言之,如果一个数据类型属性被设置为反函数,那么文本可以成为三元组的主题,这是不允许的。只需使用keys:Ignazio的OWL 2功能,您是否混淆了
OWL:inverseOf
OWL:InverseFunctionalProperty
?无论如何,不允许它的原因与这种语法限制无关。在OWL Full中,即使在数据类型属性上也允许使用反向函数属性,并且即使文字不能作为三元组的主体,也可以在OWL Full中定义数据类型属性的反向。Antoine Zimmermann已经给出了完整的解释。简言之,如果一个数据类型属性被设置为反函数,那么文本可以成为三元组的主题,这是不允许的。只需使用keys:Ignazio的OWL 2功能,您是否混淆了
OWL:inverseOf
OWL:InverseFunctionalProperty
?无论如何,不允许它的原因与这种语法限制无关。在OWL Full中,即使在数据类型属性上也允许反向函数属性,并且即使文字不能作为三元组的主语,您也可以在OWL Full中定义数据类型属性的反向。非常感谢您的回复,Antoine!如果我做对了。。。使用OWL full,我可以使数据属性与函数属性相反?我怎样才能告诉Protege将我的本体作为OWL full来处理(从而允许我使数据属性具有反向功能)?第二,我该如何定义猫头鹰:与Protege有着关键的关系?非常感谢你的回答,Antoine!如果我做对了。。。使用OWL full,我可以使数据属性与函数属性相反?我怎样才能告诉Protege将我的本体作为OWL full来处理(从而允许我使数据属性具有反向功能)?第二,我如何定义owl:hasKey与Protege的关系?