如何在jena中获取实例(Individual)的datatypeProperty和objectProperty

时间:2017-05-12 18:08:57

标签: jena apache-jena

例如,我有一个jena OntModel,有许多类,个人和属性。 我想知道为特定个人设置了多少datatypeProperty和objectProperty。

我有下面的代码,给定一个Individual,ind.listProperties()将列出所有属性,而我不知道如何判断它是否是datatypeProperty或objectProperty

static void statInstance(Individual ind, Node node) {
    for (StmtIterator j = ind.listProperties(); j.hasNext(); ) {
        Statement s = j.next();
        // how to judge if s is a datatypeProperty or objectProperty
    }
}

1 个答案:

答案 0 :(得分:0)

判断你可以使用方法org.apache.jena.rdf.model.RDFNode#canAs(Class)

if (s.getPredicate().canAs(DatatypeProperty.class)) {
    //...
} else if (s.getPredicate().canAs(ObjectProperty.class)) {
    //...
} else {
    //...
}

方法org.apache.jena.rdf.model#listProperties将返回指定个人所在的所有语句。

所以你的方法只适用于搜索对象/数据属性断言("一个R v"和" a1 PN a2"就owl2-short-guide而言)