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

时间:2016-06-15 10:26:31

标签: sparql rdf jena semantic-web ontology

假设我有以下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)

1 个答案:

答案 0 :(得分:4)

SPARQL没有条件限制或通用量化,但确实存在(存在任何匹配吗?),(隐式)连接和否定(在“缺席”意义上)。

重写问题:

∀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 }
}

如果存在违反约束的情况,此查询将返回 true