使用SPARQL检索dbpedia主题类别

使用SPARQL检索dbpedia主题类别,sparql,dbpedia,Sparql,Dbpedia,有没有办法从dbpedia中的dcterms:subject检索所有类别 例如,在中,我可以在dcterms:subject中看到以下类别: 类别:前世界最高建筑 类别:对摄影有限制的地方 类别:米其林指南星级餐厅和厨师 类别:历史建筑、土木工程、标志性建筑 类别:1889_建筑 我希望检索dbpedia中的所有category:xxx值。 有什么办法吗?如果您使用以下SPARQL查询进行计数查询,以查看dbpedia中有多少类别: SELECT COUNT(DISTINCT ?categ

有没有办法从dbpedia中的
dcterms:subject
检索所有类别

例如,在中,我可以在dcterms:subject中看到以下类别:

  • 类别:前世界最高建筑
  • 类别:对摄影有限制的地方
  • 类别:米其林指南星级餐厅和厨师
  • 类别:历史建筑、土木工程、标志性建筑
  • 类别:1889_建筑
我希望检索dbpedia中的所有
category:xxx
值。
有什么办法吗?

如果您使用以下SPARQL查询进行计数查询,以查看dbpedia中有多少类别:

SELECT COUNT(DISTINCT ?category) AS ?count WHERE {?subject dcterms:subject ?category}
您将看到dbpedia有503788个类别。如果查询所有类别,端点将不会提供整个503788类别,因为它对您可以返回的结果数量有上限。但您可以使用“限制”和“偏移量”发出多个查询。例如,要获取前1000个类别,可以执行以下查询:

SELECT DISTINCT ?category WHERE {?subject dcterms:subject ?category} LIMIT 1000 OFFSET 0
我不知道您将如何使用这些信息,但我的建议是运行多个查询并递增偏移量(例如,1000、2000、3000),并将结果缓存在您使用的任何存储中。您基本上可以编写一个执行查询并将结果放入缓存的程序

但是请记住,DBPedia中的类别是分层的,因此一个类别是来自其他几个类别的borader类别

或直接运行:


选择{类别a}限制为1000的类别

有关此问题的更多答案,请参阅重复问题