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

how to get datatypeProperty and objectProperty of an instance(Individual) in jena

例如,我有一个 jena OntModel,其中包含许多 类、个人和属性。 我想知道为特定个人设置了多少数据类型属性和对象属性。

我有下面的代码,给定一个 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
    }
}

判断可以用方法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 将 return 所有以指定个体为主题的语句。

因此您的方法仅适用于搜索 object/data 属性 断言("a R v" 和 "a1 PN a2" 在 owl2-short-guide 方面)