1

我目前正在研究一些关于 Apache Jena 的小例子。我想展示的是普遍量化。

假设我有每个颜色不同的球。这些球存放在盒子里。我现在想确定这些盒子是否只包含具有相同颜色的球,如果它们是混合的。

所以基本上是这样的:SAME_COLOR = ∃x∀y:{y in Box a → color of y = x}

我知道这对于 Jena 来说可能是不可能的,并且可以转换为以下内容: SAME_COLOR = ∃x¬∃y:{y in Box a → color of y != x}

对于“不存在”,可以使用 Jena 的“NoValue”,但是,这(至少对我而言)不起作用,我不知道如何在 Jena 中翻译上述逻辑表示。对此有什么想法吗?

请参阅下面的代码,这是我能想到的唯一方法:

(?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").

包含混合内容的框现在具有“是”和“否”两个值。

4

1 回答 1

1

我遇到了同样的问题,这更简化了。问题是如何获取对象集合或计数。规则引擎中的对象。鉴于res:subj ont:has res:obj_xxx(几个对象),如何在规则引擎中获得这个值?

但是我刚刚发现了一个叫做 Remove() 的 Primitive,这可能会启发我一点。

于 2019-06-27T12:26:47.177 回答