objectProperty中的多个域和范围?

时间:2015-05-11 16:24:09

标签: rdf semantic-web owl ontology rdfs

我想用Protege创建一个包含两个类的本体, Animal FatherAnimal ,对象属性 hasFather ,带域< strong>动物和范围 FatherAnimal

另外,我创建了另外两个类: Son Father ,它们与相同的对象属性 hasFather 相关联。这里的问题是我不允许为同一个对象属性创建多个域和范围。我真的想避免创建一个新的对象属性。还有其他解决方案吗?

1 个答案:

答案 0 :(得分:8)

问题是什么并不是很清楚。您可以向对象属性添加多个域和范围,但解释是交集。这意味着你可以说,例如,

hasFather rdfs:domain Son
hasFather rdfs:domain Animal

只要你有

X hasFather Y

你可以推断

X rdf:type Son
X rdf:type Animal

这可能不是你想要的。

在我看来,你可以这样做:

  • 不要在 hasFather 上声明任何域或范围。没有必要这样做。您可以声明属性,然后在您认为合适时使用它。

如果您想要更多类型推断,那么您还可以添加两个子类公理:

儿子 SubClassOf (hasFather 父亲)
动物 SubClassOf (hasFather AnimalFather)

这些公理说如果某事物是儿子,并且它与属性 hasFather 然后有关>某事是的一个例子。 Similiary, if 某事是动物并且与属性相关 hasFather 然后某事物是 AnimalFather 的实例。