我想用Protege创建一个包含两个类的本体, Animal 和 FatherAnimal ,对象属性 hasFather ,带域< strong>动物和范围 FatherAnimal 。
另外,我创建了另外两个类: Son 和 Father ,它们与相同的对象属性 hasFather 相关联。这里的问题是我不允许为同一个对象属性创建多个域和范围。我真的想避免创建一个新的对象属性。还有其他解决方案吗?
答案 0 :(得分:8)
问题是什么并不是很清楚。您可以向对象属性添加多个域和范围,但解释是交集。这意味着你可以说,例如,
hasFather rdfs:domain Son
hasFather rdfs:domain Animal
只要你有
X hasFather Y
你可以推断
X rdf:type Son
X rdf:type Animal
这可能不是你想要的。
在我看来,你可以这样做:
如果您想要更多类型推断,那么您还可以添加两个子类公理:
儿子 SubClassOf (hasFather 仅父亲)
动物 SubClassOf (hasFather 仅 AnimalFather)
这些公理说如果某事物是儿子,并且它与属性 hasFather ,然后有关>某事是父的一个例子。 Similiary, if 某事是动物并且与属性相关 hasFather ,然后某事物是 AnimalFather 的实例。