例如,我有一个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
}
}
答案 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而言)