6

有没有办法从dcterms:subjectdbpedia 中检索所有类别?

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

  • 类别:Former_world's_tallest_buildings
  • 类别:Places_with_restrictions_on_photography
  • 类别:Michelin_Guide_starred_restaurants_and_chefs
  • 类别:历史_土木_工程_地标
  • 类别:1889_架构
  • ...

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

4

2 回答 2

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 中的类别是分层的,因此一个类别是其他几个类别的边界类别。

于 2011-06-17T04:58:19.640 回答
1

或者简单地运行:

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

于 2014-08-06T16:42:02.643 回答