【问题标题】:Retrieve dbpedia subject categories with SPARQL使用 SPARQL 检索 dbpedia 主题类别
【发布时间】:2011-06-16 16:49:26
【问题描述】:

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

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

  • 类别:Former_world's_tallest_buildings
  • 类别:Places_with_restrictions_on_photography
  • 类别:Michelin_Guide_starred_restaurants_and_chefs
  • 类别:Historic_Civil_Engineering_Landmarks
  • 类别:1889_架构
  • ...

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

【问题讨论】:

标签: sparql dbpedia


【解决方案1】:

如果您使用以下 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 中的类别是分层的,因此一个类别是其他几个类别的边界类别。

【讨论】:

    【解决方案2】:

    或者直接运行:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多