如何使用 SPARQL 获取 Wikidata 实体的*所有*超类?

ckn*_*oll 2 semantic-web ontology sparql superclass wikidata

我对可视化维基数据类层次结构感兴趣,以创建像 向量空间实体超类的有向图

我知道如何获得维基数据实体的直接超类。为此,我使用 SPARQL 代码,例如:

SELECT ?item ?itemLabel 
WHERE 
{
    wd:Q125977 wdt:P279 ?item.
    SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
Run Code Online (Sandbox Code Playgroud)

其中wdt:P279表示subclass of- 属性。

但是,这种直接方法需要对 Wikidata API 进行多次单一请求。

如何通过单个 SPARQL 查询获得相同的信息?

(请注意,上面的示例图仅显示了一个缩略版本。所有超类的最终所需图为 13 层深,有 69 个节点,这意味着 68 个单个请求,如果有兴趣,请参阅此 jupyter notebook。)

Val*_*chi 6

您可以使用这样的查询直接将分类法(带标签)创建为三元组。

CONSTRUCT {
  ?item1 wdt:P279 ?item2.
  ?item1 rdfs:label ?item1Label.
  ?item2 rdfs:label ?item2Label.
}
WHERE {
  SELECT ?item1 ?item2 ?item1Label ?item2Label
   WHERE {
    wd:Q125977 (wdt:P279*) ?item1, ?item2.
    FILTER(EXISTS { ?item1 wdt:P279 ?item2. })
    SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
  }
}
Run Code Online (Sandbox Code Playgroud)