hal*_*ala 3 rdf semantic-web ontology sparql jena
假设我有以下 RDF 数据:
\n\n@prefix : <urn:ex:>\n\n:m :A "a"\n:m :A "b"\n:m :A "c"\n:m :B "a"\n:m :B "b"\n
Run Code Online (Sandbox Code Playgroud)\n\n我可以使用什么SPARQL查询来检查RDF模型是否满足以下逻辑公式?
\n\n\xe2\x88\x80x A(X) \xe2\x86\x92 B(x)\n
Run Code Online (Sandbox Code Playgroud)\n
SPARQL 没有条件或通用量化,但有存在性(有什么与此匹配吗?)、(隐式)合取和否定(在“不存在”意义上)。
\n\n所以重写问题:
\n\n\xe2\x88\x80x A(x) \xe2\x86\x92 B(x) \xe2\x87\x92\n\xe2\x88\x80x \xc2\xac ( A(x) \xe2\x88\xa7 \xc2\xac B(x) ) \xe2\x87\x92\n\xc2\xac \xe2\x88\x83x A(x) \xe2\x88\xa7 \xc2\xac B(x)\n
Run Code Online (Sandbox Code Playgroud)\n\n这几乎就是 SPARQL 可以做的事情:
\n\n# Is there anything of type A but not B?\nASK {\n { ?x a :A } MINUS { ?x a :B }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n如果存在任何违反约束的情况,此查询将返回true 。
\n