sparql - 如何忽略 SPARQL 中的值?
问题描述
我的部分查询如下所示:
GRAPH g1: {VALUES (?ut) {$U1}
?IC_uri skos:related ?ut .
}
通常,根据用户输入,$U1
获取 URI 列表。我想发送用于测试目的的值,$U1
以便忽略值的声明并考虑所有可能的值。事实上,它应该产生与以下相同的结果:
GRAPH g1: {
# VALUES (?ut) {$U1}
?IC_uri skos:related ?ut .
}
我记得有一种方法可以做到这一点,但我在 SPARQL 规范中找不到它。
解决方案
我建议三个选项:
FILTER (?ut IN ($ut))
, 传递$ut
而不是 URI 列表;BIND ($ut as ?ut)
, 传递$ut
而不是单个 URI;VALUES (?ut) {(UNDEF)}
,(UNDEF)
而不是用空格分隔的(括号括起来的)URI 列表。
这种 SPARQL 注射不能被认为是安全的。
10.2.2 VALUES 示例UNDEF
中首先提到的关键字:
如果变量在子句中没有特定解的值
VALUES
,则使用关键字UNDEF
而不是 RDF 术语。
推荐阅读
- sql-server - 试图让键盘命令在 SSMS 中工作的问题
- java - 解析 Java JSON 时的动态 @JsonSubTypes
- android - 在 android 应用程序中使用 oData Api
- python - 如何在 python 中使用 SQLAlchemy 修复与 db2 的连接?
- python - 如何将模型 ID 从 url 传递到基于类的视图?
- r - sf 到 data.frame:为什么在 as.data.frame 之前需要 as_Spatial
- python-3.x - 使用回调函数过滤 Dash Table
- c# - EF6 中获取相关记录信息的通用方法
- swiftui - SwiftUI:具有不同 ToolbarItem 位置的视图导致应用程序崩溃
- kubernetes - 使用 Kustomize 批量编辑 Kubernetes 注释,无需重启 pod