使用SPARQL检索dbpedia主题类别

时间:2011-06-16 16:49:26

标签: sparql dbpedia

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

例如,在http://dbpedia.org/page/Eiffel_Tower我可以在dcterms中看到:主题如下:

  • 类别:Former_world's_tallest_buildings
  • 类别:Places_with_restrictions_on_photography
  • 类别:Michelin_Guide_starred_restaurants_and_chefs
  • 类别:Historic_Civil_Engineering_Landmarks
  • 类别:1889_architecture
  • ...

我希望检索dbpedia中的所有category:xxx值。 有办法吗?

2 个答案:

答案 0 :(得分:7)

如果您使用以下SPARQL查询执行COUNT查询以查看dbpedia中有多少类别:

SELECT COUNT(DISTINCT ?category) AS ?count WHERE {?subject dcterms:subject ?category}

你会得到dbpedia有503788个类别。如果您查询所有类别,端点将不会为您提供整个503788类别,因为它会限制您可以获得多少结果。但是您可以使用LIMIT和OFFSET发出多个查询。例如,要获取前1000个类别,您可以执行以下查询:

SELECT DISTINCT ?category WHERE {?subject dcterms:subject ?category} LIMIT 1000 OFFSET 0

我不知道您将如何使用此信息,但我的建议是运行多个查询并增加偏移量(例如1000,2000,3000)并将结果缓存到您正在使用的任何存储中。您基本上可以编写一个执行查询的程序,并将结果放在缓存中。

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

答案 1 :(得分:1)

或者只是运行:

SELECT ?category WHERE { ?category a <http://www.w3.org/2004/02/skos/core#Concept> } LIMIT 1000