我正在编写一个规则文件(Fuseki Generic Reasoner),希望对某个主题的rdf对象数进行计数,因此我可以使用该数字来确定是否要制作新的三元组。但是,我找不到解决该问题的可行方法。
使用sparql,很容易计算对象数。
select (count(?object) as ?c) where {foo:bar foo:p ?object}.
但是我似乎很难用规则文件来实现该操作。
这是rdf乌龟文件:
@prefix foo: <http://example/>
foo:bar1 foo:p foo:obj_A .
foo:bar1 foo:p foo:obj_B .
foo:bar1 foo:p foo:obj_C .
foo:bar2 foo:p foo:obj_A .
foo:bar2 foo:p foo:obj_B .
我所期望的(伪代码):
[rule1: (?s foo:is 'true') <- (count ?s foo:p ?o number as ?c), greaterThan(?c, 2)]
[rule2: (?s foo:is 'false') <- (count ?s foo:p ?o number as ?c), le(?c, 2)]
所以我可以得到三元组(foo:bar1 foo:is'true')和(foo:bar2 foo:is'false')