java - 从 OWL Ontology 获取部分类(class)

标签 java owl-api hermit

我有一个用 protègè 制作的本体,我定义了一个名为part-Of 的ObjectPropertyenter image description here

我正在解析一个OWLClass,试图找出子类是否是已解析类的part。在本例中,当子类 ANAPHE 具有以下 subclass of 签名时,我正在解析 At_Home就像这张照片一样 enter image description here 我已经尝试过:

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;
    }

其中 targetAt_Home OWLClass,但该方法继续返回空的 NodeSet,因此它表示 At_Home 没有任何部分,即使 ANAPHE 是它的部分。
想要的结果应该是一个带有 OWLClass“ANA”和“PHE”的 NodeSet

最佳答案

df.getOWLObjectProperty("part-Of");

这就是问题所在。您需要使用您的属性(property)的完整 IRI,而不仅仅是片段;这与本体中所述的属性不匹配。

关于java - 从 OWL Ontology 获取部分类(class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55150652/

相关文章:

java - Google Guava 与 Apache Commons

owlapi 中的本体比较

java - OWLAPI : modify ontology after creating (HermiT) reasoner

jena - Hermit Reasoner - SPARQL 查询

java - 创建 HermiT 实例时出现 NoSuchMethodError

java - 添加 JPanel 数组时,JScrollPane 不显示滚动条

java - JBoss 上的热部署失败 - "Delete method not implemented"

Java JMenuBar : Vertical JSeparator

java - Protege OWL API 使用 URI 加载本体

java - Hermit 和 OWLApi 用于检索对象属性断言