gpt4 book ai didi

SPARQL 属性路径,第一部分是唯一的,路径在后面重复

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

假设我们有三元组

a1  blah <http://foo.com/f>
a1 pt c1
c1 pt d1

如何构建 SPARQL 查询来选择 a1c1d1 ?我需要能够行走blah谓词或多个 pt谓词。

所以 a1 可以是三元组的一部分,例如:a1 blah <http://foo.com/f>但我不知道如何指定它不是 a1,而是通过另一个方向的另一条路径连接到 a1 的对象的情况。但我还需要使用 blah 保留路径,因为这就是 a1 或 f1 通过

连接到对象的路径

这是我如何让它工作的,但它并不漂亮:

select  * from
{
# other sparql stuff before it
{ ?s blah <http://foo.com/f>
?s pt+ <c1> }
UNION
{ <c1> blah <http://foo.com/f> }
}

我可以将“c1”更改为“a1”或“d1”,上面的 sparql 仍然有效

最佳答案

AKSW's comment完全正确,您需要使用序列,而不是替代方案。根据您的示例,听起来您实际上想要通过零次或一次出现的“blah”,然后零次或多次出现的“pt”链连接到特定对象的主题。

如果您想对可以使用 IRI 引用指定的特定谓词 pq 执行此操作,那么只需

?x p?/q* ?y

q后面的*表示零或更多,p后面的?表示零或更多一个。

但是,如果您事先不知道特定的 IRI,例如,您想使用变量,例如:

?x (?p)?/(?q)* ?y

那么你可能就不走运了。 SPARQL 属性路径不支持变量。您可以在属性路径中使用诸如 s|!s 之类的内容获取通配符,因为每个 URI 要么是 s,要么不是,但是有没有将可重复变量放入属性路径的规定。

关于SPARQL 属性路径,第一部分是唯一的,路径在后面重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36213419/

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