不知道如何使用 Hermit 从 ontology 在 java 中获取对象 属性

don't know how to get object property from ontology in java with Hermit

我正在尝试从 class 获取对象 属性,特别是:我正在尝试了解 class 何时是其他 [=] 的一部分32=](使用的构造可以在屏幕截图中看到)。

我已经尝试在 OWLClass 对象上使用 OWL-api 函数 getObjectPropertiesInSignature()(对象是 "e").

//display delle object property
Set<OWLObjectProperty> proprietà = e.getObjectPropertiesInSignature();
System.out.println("Object Property:");
if(proprietà.isEmpty()) {
    System.out.println("\tQuesta classe non ha object property");
}
else {
    for(OWLObjectProperty prop : proprietà) {
        System.out.println("\t"+ prop);
    }
}

代码段的输出是 Questa classe non ha object property,所以函数 return 是一个空集合,但在这种情况下,它应该 return 一个包含一个对象的集合 属性: 对象的一部分 属性.

您要查找的是 class 是否包含在对象 属性 的域中(classes 不 'have' OWL),或者 class 是否是限制的子 class。 class 对象的签名仅在 class 表达式提到 属性 时才包含对象属性,例如限定基数限制或存在限制,如您的示例所示。

为了查看 class 是否有一个使用 partOf 的超级 class,您可以创建一个 class 表达式来表示您的子项的右侧class 公理并要求其子classes.

OWLDataFactory df = ...
OWLClassExpression c = df.getOWLObjectSomeValuesFrom(partOf, car);
NodeSet subClasses = hermit.getSubClasses(c, false);

对于 partOf 域中的 classes,您必须寻找域表达式交集的子classes:

OWLClassExpression domain = df.getOWLObjectIntersectionOf(ontology.objectPropertyDomainAxioms(partOf));
NodeSet subClassesInDomain = hermit.getSubClasses(domain, false);