我想获得一个班级的人数。例如,对于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。
答案 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。