"Для всех" с использованием механизма правил 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(), который может меня немного вдохновить.