gpt4 book ai didi

graph - 对两个图运行 sparql 查询?

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

指定图形的典型 SPARQL 查询可能如下所示:

SELECT ?b ?c WHERE { GRAPH <http://AliceIRI> {
<http://local.virt/foo> ?b ?c}}

这将告诉我 AliceIRI 中的所有三元组,其中“foo”是一个主题。如果我想查看两个不同的图表,我唯一的选择是做 UNION:
SELECT ?b ?c WHERE {{ GRAPH <http://AliceIRI> {
<http://local.virt/foo> ?b ?c}}
UNION
{ GRAPH <http://BobIRI> {
<http://local.virt/foo> ?b ?c}}}

或者有什么速记可以让我更方便地写这个,像这样:
SELECT ?b ?c WHERE { GRAPH <http://AliceIRI> + <http://BobIRI> {
<http://local.virt/foo> ?b ?c}

顺便说一句,我在 Virtuoso 6.01.3127 上。

更新 1

澄清一下,我真的很想能够运行:
SELECT ?b ?c WHERE { GRAPH <http://AliceIRI> + <http://BobIRI> {
<http://local.virt/foo> ?b ?c .
<http://local.virt/bar> ?b ?c}}

并进行这场比赛 ?b?c使得 <http://local.virt/foo> ?b ?c<http://AliceIRI><http://local.virt/bar> ?b ?c<http://BobIRI> .只需在 <http://AliceIRI> 中取匹配项的并集即可(单独)和 <http://BobIRI> (单独)不会做到这一点。

并进一步澄清:我已经意识到,如果 foos 都属于 Alice 而酒吧都属于 Bob,那么我可以写
SELECT ?b ?c WHERE { 
GRAPH <http://AliceIRI> {
<http://local.virt/foo> ?b ?c } .
GRAPH <http://BobIRI> {
<http://local.virt/bar> ?b ?c}}

(这实际上是我的应用程序所需要的)——但至少对于“学术兴趣”而言,是否有一种语法上很好的方式来对图的联合运行查询(而不是针对多个图然后联合)的问题结果)仍然有效。

最佳答案

是的

SELECT ?b ?c
FROM NAMED <http://AliceIRI>
FROM NAMED <http://BobIri>
WHERE
{
GRAPH ?g { <http://local.virt/foo> ?b ?c }
}
FROM NAMED子句可用于设置使用 GRAPH ?var 时查询的命名图。条款。

需要注意的是,这个查询在语义上与你上面写的相同,所以 GRAPH 表达的模式是很重要的。子句分别与每个命名图匹配并结合在一起

编辑

如果您使用 FROM,可以回答您评论中的额外问题。而不是 FROM NAMED这将查询的默认图形设置为 FROM 中所有图形的合并条款并且不需要您使用 GRAPH例如
SELECT ?b ?c
FROM <http://AliceIRI>
FROM <http://BobIri>
WHERE
{
<http://local.virt/foo> ?b ?c
}

这涵盖了您希望允许匹配三元组模式不同部分的三元组来自您命名的任何图形的情况。

请注意,某些三元组商店可能允许您设置它们,以便将默认图自动视为所有命名图的合并。

关于graph - 对两个图运行 sparql 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15328666/

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