You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SPARQL从DBpedia获取is dct:subject of属性并解决层级主题问题

解答你的DBpedia SPARQL问题

1. 关于「is skos:broader of」属性的有效性与空格处理

首先,不存在名为is skos:broader of的标准SPARQL属性——这只是自然语言对逆关系的描述。在SKOS本体中,skos:broader表示“更上层的分类”(比如Category:Mathematics的skos:broader是Category:Science),而你想要的“被某个分类作为上层分类”(即子分类关系),在SPARQL中用逆属性语法表示:在属性前加^符号,也就是^skos:broader,完全不需要处理空格,这是SPARQL的标准语法。

2. 正确获取Science分类的最多5级相关主题

你之前针对Mathematics用skos:broader{0,4}是向上遍历父类,但Science本身是DBpedia分类体系中的顶层分类之一,它的父类是更泛的元分类(比如Main_topic_classifications),这显然不是你要的“相关主题”。你需要的是向下遍历Science的子分类,最多到5级,这时候就要用逆属性的递归路径:

SELECT DISTINCT ?value
WHERE {
  ?value skos:broader{0,4} <http://dbpedia.org/resource/Category:Science>
}
  • skos:broader{0,4}表示0到4步的递归:0步就是Science本身,1步是直接子分类,直到4步是第4层子分类,总共覆盖5级主题。
  • 加上DISTINCT避免重复结果,因为有些分类可能有多个父类。

3. 获取「is dct:subject of」的内容

同样,「is dct:subject of」是dct:subject的逆关系:dct:subject是资源(比如维基百科页面)指向它所属的分类,而逆关系就是“哪些资源以某个分类为主题”。用SPARQL的逆属性语法^dct:subject即可实现,比如要找所有以Science分类为主题的页面:

SELECT DISTINCT ?page
WHERE {
  ?page ^dct:subject <http://dbpedia.org/resource/Category:Science>
}

如果是针对某个具体资源,比如查询哪些页面把Category:Mathematics作为主题,只需替换URI即可。

内容的提问来源于stack exchange,提问作者Adarsa Sivaprasad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:48:57