SPARQL 查询,其中至少存在多个属性之一

SPARQL query where at least one of multiple properties exist

提问人:user3684314 提问时间:11/8/2023 更新时间:11/8/2023 访问量:30

问:

我正在尝试在自定义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

任何正确方向的帮助或指示将不胜感激!非常感谢!

sparql 查询 wikidata-query-service

评论


答:

1赞 Stanislav Kralin 11/8/2023 #1
  1. 添加查询的开头。?item wdt:P1|wdt:P2|wdt:P3|wdt:P4 []
  2. 切勿以 .OPTIONAL

评论

0赞 user3684314 11/9/2023
这可能是我的无知,但它似乎不起作用——我会将我正在尝试的内容作为编辑添加到原始帖子中,但它目前返回零结果。编辑:等等,没关系,我搞砸了!这效果很好!非常感谢!