如何在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 方面)
例如,我有一个 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 方面)