在维基数据 SPARQL 查询中如何寻址文件?

In a wikidata SPARQL query how to address a file?

如何处理公共媒体文件?

在 wikidata 中想要找到所有对象,这些对象具有通过特定 属性 和 SPARQL 查询附加的公共媒体文件。

示例:

SELECT ?item
{
    # get all objects which have this file as a LocatorMap
    ?item wdt:P242 commons:LocationPeru.svg
}

这行不通,所有变体(如 wd:commons:LocationPeru.svgp:P242 [ps:P242 psv:commons:LocationCuba.svg] 或我尝试过的其他所有变体也行不通。我还尝试了带有标签的 FILTER,但 rdfs:label ?label 在文件对象上对我不起作用。

那么,正确的语法是怎样的?

谢谢。

实际上,我想使用 MINUS 从更复杂的查询中过滤掉特定的查询,但将我的问题简化为这个。

您可以使用完整的图片URL:

SELECT ?item
{
  ?item wdt:P242 <http://commons.wikimedia.org/wiki/Special:FilePath/LocationPeru.svg>
}

实际上,从上面的查询来看,似乎没有任何项目表明 LocationPeru.svg 作为定位器地图。这是因为在Q419#P242中有一个更高级别的定位器地图。

要忽略语句的排名,您可以使用:

SELECT ?item
{
  ?item p:P242 [ ps:P242 <http://commons.wikimedia.org/wiki/Special:FilePath/LocationPeru.svg> ]
}

只过滤正常等级,你可以使用:

SELECT ?item
{
  ?item p:P242 [
      ps:P242 <http://commons.wikimedia.org/wiki/Special:FilePath/LocationPeru.svg> ;
      wikibase:rank wikibase:NormalRank
    ]
}