我目前正在研究一些关于 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").
包含混合内容的框现在具有“是”和“否”两个值。