在Jena API中,如何使用Jena RULE计算一个班级的人数?

时间:2018-06-21 14:47:02

标签: jena ontology

我想获得一个班级的人数。例如,对于Person类,有A,B,C。我尝试使用以下规则对其进行计数:

[r3: (?p rdf:type hv:Person),(?classx1 hv:hasvalue ?n),addOne(?n,?new)
-> drop(1),(?class1 hv:hasvalue ?new)
]

但是,由于(?class1 hv:hasvalue ?new)每次都会改变,因此它是在闭环中触发的。我不喜欢介绍SPARQL。

1 个答案:

答案 0 :(得分:1)

我计算个人人数的方法是:

OntModel model;

Resource individual = model.getResource("http://www.w3.org/2002/07/owl#NamedIndividual"));
Property property = model.getProperty("http://www.w3.org/1999/02/22-rdf-syntax-ns#type");

ResIterator iterator = infModel.listResourcesWithProperty(property, individual) ;

int count = Iterators.size(iterator);

由于Guava Library,最后一行是可能的。

可以改进,但仍然是解决方案。

更多信息和评论中的更正。感谢@ssz。