[英]"For all" using Apache Jenas rule engine
我目前正在研究一些關於 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").
具有混合內容的框現在具有值“是”和“否”。
我遇到了同樣的問題,它更簡單。 問題是如何獲取對象集合或計數。 規則引擎中的對象。 鑒於res:subj ont:has res:obj_xxx
(幾個對象),如何在規則引擎中獲取此值?
但是我剛剛找到了一個名為 Remove() 的 Primitive,這可能會對我有所啟發。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.