gpt4 book ai didi

sparql - 在构造查询中使用绑定(bind)连接

转载 作者:行者123 更新时间:2023-12-02 04:59:46 24 4
gpt4 key购买 nike

我有以下查询

CONSTRUCT{
?entity a something;
a label ?label .
}
WHERE
{
?entity a something;
a label ?label .
BIND(CONCAT(STR( ?label ), " | SOME ADDITIONAL TEXT I WOULD LIKE TO APPEND MANUALLY") ) AS ?label ) .
}

我只是想将一些文本与 ?label 连接起来,但是在运行查询时出现以下错误:

BIND clause alias '?label' was previously used

我只想返回 ?label 的单个实例,因此,我在构造子句中定义了它。

最佳答案

错误消息似乎是准确的,但这只是您通过此查询得到的许多错误消息中的第一个。通常要求查看一些 SPARQL 学习资源,至少了解基于三元组的图形模式匹配的基础知识,以及一些关于要查找的内容的提示。 CONSTRUCT 并不是一个糟糕的起点,以下内容几乎应该达到我认为您的意图:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
CONSTRUCT{
?entity rdfs:label ?label .
}
WHERE
{
?entity a ex:something ;
rdfs:label ?oldlabel .
BIND(CONCAT(STR( ?oldlabel ), " | SOME ADDITIONAL TEXT I WOULD LIKE TO APPEND MANUALLY") ) AS ?label ) .
}

该查询有很多不同之处,因此请查看它是否准确地满足您的要求。一个提示是使用“.”之间的语法差异。和 ';'分离三重图案。另一个是每个子句定义一个 URL(在示例中使用 qname)或一个变量(以“?”为前缀)。 “标签”或“某物”均无效。

我说“几乎”是因为 CONSTRUCT 只返回一组三元组。要修改标签(我认为这是意图),您需要使用 SPARQL Update,即:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ex: <http://example.org/example#>
DELETE {
?entity rdfs:label ?oldlabel .
}
INSERT{
?entity rdfs:label ?label .
}
WHERE
{
?entity a ex:something .
?entity rdfs:label ?oldlabel .
BIND(CONCAT(STR( ?oldlabel ), " | SOME ADDITIONAL TEXT I WOULD LIKE TO APPEND MANUALLY") AS ?label ) .
}

注意三重模式如何找到 ?oldlabel 的匹配项并删除它们,而是插入新绑定(bind)的 ?label。此查询假设定义了一个默认图表,其中包含原始数据和更新目标。如果没有,则需要使用WITH 或GRAPH 指定图形。 (还包括有关使用“.”和“;”分隔三元组模式之间的语法差异的另一个提示。)

关于sparql - 在构造查询中使用绑定(bind)连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36166636/

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