我正在编写一个规则文件(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')