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。)
您可以使用这样的查询直接将分类法(带标签)创建为三元组。
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)