首页 > 解决方案 > Wikidata SPARQL:获取子类但也返回父类

问题描述

我正在对 Wikidata 实体编写 SPARQL 查询,并且我想获取所有匹配“是实体 Q3 或其子类之一”的实体。

我知道如何仅通过以下查询获取子类:

SELECT DISTINCT ?item
WHERE {
{ ?item wdt:P279 wd:Q3 . }
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}

但我还想Q3在响应中包含原始父实体(此处)。我应该如何修改我的查询以便Q3也返回?

标签: sparqlwikidata

解决方案


我最终自己找到了解决方案:我需要?在查询中的属性之后添加一个(表示“0 或 1”)。

所以它变成:

SELECT DISTINCT ?item
WHERE {
{ ?item wdt:P279? wd:Q3 . } # here is the extra "?" after "wdt:P279"
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}

现在这会正确返回 Q3 及其所有子类。


推荐阅读