在 Jena 中设置 属性 的域有什么好处?

What is the benefit of setting the domain of a property in Jena?

首先,我创建两个 class,如下所示。

OntClass  Class1 = ontModel.getOntClass(prefix+"Class1");
OntClass Class2 = ontModel.createClass( prefix+"Class2" );

然后,我创建一个 属性 并设置其域和范围如下。

DatatypeProperty property = ontModel.createDatatypeProperty(prefix+"property1");
property.addDomain(Class2);
property.addRange(Class2);

然后,我创建了一个个体class1.

Individual ind1 = ontModel.createIndividual( prefix+ "ind1",class1);

最后,我给个人加了属性

ind1.addProperty(property, "SSSSSS");

这是我的问题。既然我已经定义了属性的域和范围,那么另一个class的个体如何才能成功拥有这个属性呢?

类 in OWL 并不都是不相交的,所以一个个体可以属于多个 classes.

属性的域和范围不会阻止您对不属于该域或范围的个人使用这些属性;做出这样的断言只会使推理者能够推断出个人也属于指定为域的class。

这是 "unsuccessful" 的唯一情况是当域 class 和个人被推断属于的任何其他 class 也被声明为不相交,或者可以是推断为不相交 - 在这种情况下,属于两者的个体会导致不一致。