Как посчитать тройное число, используя рассуждения Джены Фусеки? - PullRequest
1 голос
/ 25 июня 2019

Я пишу файл правил (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')

...