我试图创建一个猫头鹰本体论使用蛋白酶。我想使用逆函数属性作为关系数据库中的主键的相似之处。例如,我有一个属性,它有一个唯一的id作为对象,从而标识了该实体,并且不允许其他实体使用该属性的值。
由于对象值是字符串,所以它必须是数据属性。但是在Protege中,不能将逆函数特征分配给数据属性。
为什么我不能将数据属性声明为逆函数属性,如果不是这样,我应该如何创建“唯一键”逻辑?
提前谢谢你,
弗兰克
发布于 2017-04-11 16:33:39
对数据类型属性的限制纯粹是由于计算复杂性。没有限制,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可以是一个逆函数属性,那么这个本体就不一致了。原因在于OWL 2中密钥的工作方式。要想识别某个东西,必须显式地命名它。有几个未命名的事物具有相同的密钥(这里的键是数字1),但是,只要它们没有在本体中显式声明,它们就不会被认为是相等的。然而,对于反函数性质,情况并非如此。因此,我们可以推断所有在属性1上具有ex:key值的东西都是相同的,因此,ex:this不能有属性ex:prop的2个值。
https://stackoverflow.com/questions/43343900
复制相似问题