properties - OWL:为什么数据属性不能是 InverseFunctionalProperty?

标签 properties owl ontology modeling protege

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

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

关于properties - OWL:为什么数据属性不能是 InverseFunctionalProperty?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43343900/

相关文章:

java - jsp可以访问.jar文件吗?

c# - 自动实现的属性 setter 上的条件断点

java - 如何验证 OWLDataRange 对象是否包含指定值?

java - Jena getNsPrefixUri 返回 null(如何为 OWL 本体定义基本 URI?)

jena - 如何在 TDB 中存储多个本体

c# - XML反序列化: working with list

c++ - 作为模板的属性的属性

java - 在java中指定本体IRI

java - Apache Jena - 获取所有具有属性的资源

computer-science - 计算机科学分类法