如何使用SPARQL查询按ID从Wikidata查询特定实体?

如何使用SPARQL查询按ID从Wikidata查询特定实体?,sparql,wikidata,Sparql,Wikidata,我需要一个SPARQL查询,返回特定的Wikidata ID或ID列表。在现实生活中,这样的查询是无用的,但我需要它来进行测试 我能想到的最简单的变体是: SELECT DISTINCT ?s WHERE { ?s ?p ?o FILTER (?s = wd:Q151345). } 我必须使用DISTINCT,因为?s?p?o匹配Q151345中的每一个三元组,如果我忽略它,它将输出它拥有的属性值对的倍数的项 有没有更简单的方法?通过关键字值,可以使用多个实例 PREFIX bd:

我需要一个SPARQL查询,返回特定的Wikidata ID或ID列表。在现实生活中,这样的查询是无用的,但我需要它来进行测试

我能想到的最简单的变体是:

SELECT DISTINCT ?s
WHERE 
{
  ?s ?p ?o
  FILTER (?s = wd:Q151345).
}
我必须使用
DISTINCT
,因为
?s?p?o
匹配Q151345中的每一个三元组,如果我忽略它,它将输出它拥有的属性值对的倍数的项


有没有更简单的方法?

通过关键字值,可以使用多个实例

PREFIX bd: <http://www.bigdata.com/rdf#> 
PREFIX wd: <http://www.wikidata.org/entity/> 
PREFIX wdt: <http://www.wikidata.org/prop/direct/> 
PREFIX wikibase: <http://wikiba.se/ontology#> 

SELECT ?s
WHERE 
{
  VALUES ?s {  wd:Q151345 wd:Q2996394  }
  ?s ?p ?o
}
LIMIT 10
前缀bd: 前缀wd: 前缀wdt: 前缀wikibase: 选择 哪里 { 值?s{wd:Q151345 wd:Q2996394} ?s?p?o } 限制10 演示:


文件:

为什么不追加
限额1
?不确定查询的目的是什么?只是想看看有没有三重的?什么是“更容易”?关于什么?如果你只想检查是否有三元组,你也可以使用
ASK{wd:Q151345?p?o}
返回一个布尔值。就像我说的,目的是测试,我需要在特定的结果集上测试一些软件,而不是在实际的结果集上测试。但treat更像是一个理论问题(因为我自己的解决方案实际上达到了我的目标)。Easter==shorter,我正在寻找一种类似
{wd:Q151345?p?o}
的形式,但我不知道如何将第一个元素作为变量绑定到输出。我的意思是,自SPARQL 1.1以来,内联数据的最佳实践是通过
子句:
选择不同的s,其中{VALUES?s{wd Q151345}s?p?o}
-但如果这“更容易”对你来说,我不确定。这只是现在常见的方法。或者@StanislavKralin,我不知道我可以省略谓词和宾语。我去掉了过滤器,这张表看起来是最短的
select?s{values?s{wd:Q1 wd:Q2}
。这是可行的,但它会多次输出
?s
,这是意料之中的,但是如果我添加
DISTINCT
?@greatvovan,为什么它什么也不输出呢?请向我展示您对SPARQL端点的查询。。。具有不同和值的查询也可以使用。。。请看消息中的演示。请看,这基本上是您对
DISTINCT
@greatvovan的查询,可能是数据库中的一个bug