"Для всех" с использованием механизма правил Apache Jenas

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

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

Итак, в основном что-то в этом роде: SAME_COLOR = ∃x∀y:{y в блоке a → цвет y = x}

Я знаю, что это, вероятно, невозможно с Дженой, и может быть преобразовано в следующее: 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").

Ящик со смешанным содержимым теперь имеет оба значения: "Да" и "Нет".

0 ответов

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

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

Другие вопросы по тегам