我有一个用 protègè 制作的本体,我定义了一个名为part-Of 的ObjectProperty
。
我正在解析一个OWLClass
,试图找出子类是否是已解析类的part
。在本例中,当子类 ANA
和 PHE
具有以下 subclass of
签名时,我正在解析 At_Home
就像这张照片一样
我已经尝试过:
OWLDataFactory df = manager.getOWLDataFactory();
OWLObjectProperty partOf = df.getOWLObjectProperty("part-Of");
OWLClassExpression c = df.getOWLObjectSomeValuesFrom(partOf, target);
NodeSet<OWLClass> subClasses = hermit.getSubClasses(c, true);
if(subClasses.isEmpty()) {
//System.out.println("\tQuesta classe non ha parti");
res[0] = null;
}
else {
for(Node<OWLClass> parte : subClasses) {
risultato.add(parte.getRepresentativeElement().getIRI().getFragment());
}
res[0] = risultato;
}
其中 target
是 At_Home
OWLClass
,但该方法继续返回空的 NodeSet
,因此它表示 At_Home
没有任何部分,即使 ANA
和 PHE
是它的部分。
想要的结果应该是一个带有 OWLClass
“ANA”和“PHE”的 NodeSet
最佳答案
df.getOWLObjectProperty("part-Of");
这就是问题所在。您需要使用您的属性(property)的完整 IRI,而不仅仅是片段;这与本体中所述的属性不匹配。
关于java - 从 OWL Ontology 获取部分类(class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55150652/