«Для всех» с использованием механизма правил Apache Jenas - PullRequest
0 голосов
/ 26 января 2019

В настоящее время я работаю над некоторыми небольшими примерами об Apache Jena.То, что я хочу показать, это универсальное количественное определение.

Допустим, у меня есть шары, каждый из которых имеет свой цвет.Эти шары хранятся в коробках.Теперь я хочу определить, содержат ли эти коробки только шары одинакового цвета, если они смешаны.

Итак, в общем-то что-то вроде этого: SAME_COLOR = ∃x∀y: {y в Box a → color ofy = x}

Я знаю, что это, вероятно, невозможно с Jena, и может быть преобразовано в следующее: SAME_COLOR = ∃x¬∃y: {y в Box a → color of y! = x}

С «не существует» можно использовать «NoValue» Джены, однако, это (по крайней мере, для меня) не работает, и я не знаю, как перевести вышеуказанные логические представления в Йене.Есть какие-нибудь мысли по этому поводу?

См. Приведенный ниже код, и это единственный способ, которым я мог придумать:

(?box, ex:isA, ex:Box)
(?ball, ex:isIn, ?box)
(?ball, ex:hasColor, ?color)
(?ball2, ex:isIn, ?box)
(?ball2, ex:hasColor, ?color2)
NotEqual(?color, ?color2)
->
(?box, ex:hasSomeColors, "No").


(?box, ex:isA, ex:Box)
NoValue(?box, ex:hasSomeColors)
->
(?box, ex:hasSomeColors, "Yes").

У поля со смешанным содержимым теперь есть оба значения: «Да» и «Нет».».

1 Ответ

0 голосов
/ 27 июня 2019

Я столкнулся с такой же проблемой, которая более упрощена. Вопрос в том, как получить коллекцию объектов или считать нет. объектов в правиле двигателя. Учитывая, что res:subj ont:has res:obj_xxx (несколько объектов), как получить это значение в механизме правил?

Но я только что нашел Примитив под названием Remove (), который может меня немного вдохновить.

...