gpt4 book ai didi

rdf - 在 SPARQL 中测试谓词的存在

转载 作者:行者123 更新时间:2023-12-04 18:45:00 25 4
gpt4 key购买 nike

我有以下 RDF 模型:

@prefix : <http://test.com/#> .

:graph1 :hasNode :node1 ;
:centerNode :node1 .

:graph1 :hasNode :node2 .
:graph1 :hasNode :node3 .

我想运行一个 SPARQL 查询,如果 :nodeX:graphX 相关带有谓词 :centerNode我返回 true (或其他指示)否则 false ;结果将如下所示:
?n       ?g        ?centered
-----------------------------
:node1 :graph1 true
:node2 :graph1 false
:node3 :graph1 false

在 SPARQL 1.0 中有没有办法做到这一点?如果没有,可以在 SPARQL 1.1 中完成吗?

最佳答案

可以结合EXISTSBIND在 SPARQL 1.1 中如下所示:

PREFIX : <http://test.com/#>

SELECT * WHERE {
?graph :hasNode ?node .
BIND( EXISTS { ?graph :centerNode ?node } as ?isCentered )
}

使用 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 |
---------------------------------

关于rdf - 在 SPARQL 中测试谓词的存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16401179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com