2011-06-16 62 views
6

有没有办法从dbpedia中的dcterms:subject检索所有类别?使用SPARQL检索dbpedia主题类别

作为一个例子,在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_建筑学
  • ...

我想检索DBpedia中所有category:xxx值。 有没有办法?

+0

看到http://answers.semanticweb.com/questions/10252/retrive-dbpedia-subject-categories-with-sparql重复的问题,以获取更多的答案 – RobV 2011-06-17 07:42:37

回答

7

如果你去一个做一个统计查询,看看有多少类别中使用以下SPARQL查询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

或者干脆运行:

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