我有以下RDF模型:
@prefix : <http://test.com/#> .
:graph1 :hasNode :node1 ;
:centerNode :node1 .
:graph1 :hasNode :node2 .
:graph1 :hasNode :node3 .
Run Code Online (Sandbox Code Playgroud)
我想运行一个SPARQL查询,其中如果a 与一个谓词:nodeX相关,我返回(或其他一些指示); 结果如下所示::graphX:centerNodetruefalse
?n ?g ?centered
-----------------------------
:node1 :graph1 true
:node2 :graph1 false
:node3 :graph1 false
Run Code Online (Sandbox Code Playgroud)
有没有办法在SPARQL 1.0中执行此操作?如果没有,可以在SPARQL 1.1中完成吗?
您可以在 SPARQL 1.1 中组合EXISTS和 ,BIND如下所示:
PREFIX : <http://test.com/#>
SELECT * WHERE {
?graph :hasNode ?node .
BIND( EXISTS { ?graph :centerNode ?node } as ?isCentered )
}
Run Code Online (Sandbox Code Playgroud)
使用 Jena 的 ARQ,我得到以下结果:
$ /usr/local/lib/apache-jena-2.10.0/bin/arq \
--data predicate.n3 \
--query predicate.sparql
---------------------------------
| graph | node | isCentered |
=================================
| :graph1 | :node3 | false |
| :graph1 | :node2 | false |
| :graph1 | :node1 | true |
---------------------------------
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2187 次 |
| 最近记录: |