如何将模型检查逻辑查询转换为 SPARQL 查询?

how to convert model checking logic query to SPARQL query?

假设我有以下 RDF 数据:

@prefix : <urn:ex:>

:m  :A  "a"
:m  :A  "b"
:m  :A  "c"
:m  :B  "a"
:m  :B  "b"

我可以使用什么 SPARQL 查询来检查 RDF 模型是否满足以下逻辑公式?

∀x A(X) → B(x)

SPARQL 没有条件或通用量化,但有存在性(有什么匹配吗?)、(隐式)合取和取反(在 'absence' 意义上)。

所以重写问题:

∀x A(x) → B(x) ⇒
∀x ¬ ( A(x) ∧ ¬ B(x) ) ⇒
¬ ∃x A(x) ∧ ¬ B(x)

SPARQL 几乎可以做到这一点:

# Is there anything of type A but not B?
ASK {
  { ?x a :A } MINUS { ?x a :B }
}

这个查询returnstrue如果有任何违反约束的情况。