gpt4 book ai didi

python - 如何在 SPARQL 查询中预定义变量

转载 作者:太空狗 更新时间:2023-10-30 03:00:44 25 4
gpt4 key购买 nike

我创建了一个 SPARQL 查询来检索有关工作流元素的大量信息。查询与数据库对话并从 Python 调用。查询的形式如下:

"""SELECT ?input ?value1 ?value2 ?value3 ....
WHERE {?input rdf:type InputVar.
?input property1 ?value1.
?input property2 ?value2.
?input property3 ?value3.
.... etc....
}"""

此查询将返回与我想知道的属性对应的所有值。

我现在希望我的查询能够做的是我希望它能够查找所有输入变量(就像现在一样)并且我希望它能够收集一个指定输入的信息.这样做是可能的:

%s property1 ?value1
%s property2 ?value2

根据是否指定了名称,我会让 %s 为 ?input 或 inputname(指定的名称)。

但是,如果我这样做,我将需要很多 %s,因为我正在提取相当多的属性。

在 SPARQL 中,是否可以定义要查找的变量的名称?那么有没有可能做这样的事情呢?

    """SELECT ?input ?value1 ?value2 ?value3 ....
WHERE {(?input=inputname)
?input rdf:type InputVar.
?input property1 ?value1.
?input property2 ?value2.
?input property3 ?value3.
.... etc....
}"""

所以在开头添加类似(?input=inputname)的内容,这样它就只查找这个值?

最佳答案

在一般情况下,您可以尝试为此使用 VALUES 子句

SELECT *
WHERE
{
VALUES ?input { <http://myConstant> }
?input rdf:type InputVar.
?input property1 ?value1.
?input property2 ?value2.
?input property3 ?value3.
# etc.
}

但是,重要的是要了解这实际上并没有直接执行您想要的操作。从语义上讲,它所做的是将常量连接到图形模式的匹配项中,从而消除 ?input 与您的常量不匹配的匹配项。一些查询引擎可能足够聪明,可以将其简化为替换,但并非所有引擎都可以,而且只适用于相对简单的查询。

听起来您真的在寻求大多数 SQL API 中的某种准备/参数化查询支持?

看看What's the best way to parameterise SPARQL queries其中讨论了如何在各种 API 中执行此操作。

自从你提到 Python answer using Python可能特别感兴趣,它基于 prepared queries 的示例来自 RDFLib 文档

关于python - 如何在 SPARQL 查询中预定义变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28217801/

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