我有多个资源,例如A, B, C
。
我想知道这些资源是否存在于我的数据库中。
以下是其中一个查询的示例:
ASK { <http://fkg.iust.ac.ir/resource/A> ?p ?o }
此查询返回true
或false
。
最好使用一个查询,而我需要获得2列resource
和existing
。
这是我的样本回复:
---------------------------------------------------
| resource | existing |
|========================|========================|
| :A | true |
|------------------------|------------------------|
| :B | false |
|------------------------|------------------------|
| :C | true |
---------------------------------------------------
我知道ASK
和UNION
,但是如何为这个示例将它们放在一起?
答案 0 :(得分:4)
查询:
PREFIX : <http://fkg.iust.ac.ir/resource/>
SELECT ?resource (EXISTS { ?resource ?p ?o } AS ?existing) {
VALUES ?resource { :A :B :C }
}
测试数据:
<http://fkg.iust.ac.ir/resource/A> a _:dummy.
<http://fkg.iust.ac.ir/resource/C> a _:dummy.
结果:
-----------------------
| resource | existing |
=======================
| :A | true |
| :B | false |
| :C | true |
-----------------------
SELECT
而不是ASK
VALUES
EXISTS
就像一个迷你ASK
查询,可以嵌入到表达式中SELECT (expression AS ?variable)
格式将mini-ASK
的结果绑定到变量?existing
ASK
查询为书面查询,检查是否有以该节点为主题的三元组。为了完整起见,可能还需要检查对象的位置:
(EXISTS { ?resource ?p ?o } || EXISTS { ?s ?p ?resource })