提问人:user3684314 提问时间:11/8/2023 更新时间:11/8/2023 访问量:30
SPARQL 查询,其中至少存在多个属性之一
SPARQL query where at least one of multiple properties exist
问:
我正在尝试在自定义Wikibase实例上运行查询。在这个维基库中,有一个具有多个版本(v0、v1、v2 和 v3)的标识符。我正在尝试返回至少存在其中一个标识符的所有实体。我认为关键字可能会起作用,所以我运行了以下内容:OPTIONAL
PREFIX wd: <https://wikibase.cloud/entity/>
PREFIX wdt: <https://wikibase.cloud/prop/direct/>
SELECT ?item ?itemLabel ?val_0 ?val_1 ?val_2 ?val_3
WHERE
{
OPTIONAL { ?item wdt:P1 ?val_0 . }
OPTIONAL { ?item wdt:P2 ?val_1 . }
OPTIONAL { ?item wdt:P3 ?val_2 . }
OPTIONAL { ?item wdt:P4 ?val_3 . }
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
但是,这仅返回具有 v0 标识符 (?val_0) 的实体,然后在后续版本上执行该命令。例如,如果实体只有 v1 (?val_1),它仍应返回。如果实体只有 v3 (?val_3),它仍应返回。OPTIONAL
我无法通过 Google 搜索或搜索 StackOverflow 找到有关类似查询的任何内容,但话又说回来,我可能没有搜索正确的术语。
为了说明这一点,这是当前输出的模型:
项目 | itemLabel(项目标签) | val_0 | val_1 | val_2 | val_3 |
---|---|---|---|---|---|
问题1 | 标签 A | X | |||
问题2 | 标签 B | X | X | ||
问题3 | 标签 C | X | X | X | |
问题4 | 标签 D | X | X | X | X |
问题5 | 标签 E | X | X |
这是预期输出的模型:
项目 | itemLabel(项目标签) | val_0 | val_1 | val_2 | val_3 |
---|---|---|---|---|---|
问题1 | 标签 A | X | |||
问题2 | 标签 B | X | |||
问题3 | 标签 C | X | X | ||
问题4 | 标签 D | X | X | X | |
问题5 | 标签 E | X | X |
任何正确方向的帮助或指示将不胜感激!非常感谢!
答:
1赞
Stanislav Kralin
11/8/2023
#1
- 添加查询的开头。
?item wdt:P1|wdt:P2|wdt:P3|wdt:P4 []
- 切勿以 .
OPTIONAL
评论
0赞
user3684314
11/9/2023
这可能是我的无知,但它似乎不起作用——我会将我正在尝试的内容作为编辑添加到原始帖子中,但它目前返回零结果。编辑:等等,没关系,我搞砸了!这效果很好!非常感谢!
评论