【问题标题】:How to get all organisations from DBPedia?如何从 DBPedia 获取所有组织?
【发布时间】:2016-04-25 10:10:15
【问题描述】:

如何从 DBpedia 获取所有组织的列表? 我所说的“组织”是指任何类型的实体,它可以是 organisation 或组织的任何子类。

我找到了问题 How to get all companies from DBPedia?,但这在当前的 DBpedia SPARQL 网络版本中不起作用,我无法调整查询。

【问题讨论】:

  • 可以看到您尝试过的查询。而“不起作用”是什么意思——什么都不返回、不完整的结果、错误的结果......
  • 在你的链接查询中,前缀dbpedia-owl现在不同了dbo
  • 请注意我已经更新了我的答案:过滤器不在正确的位置。
  • 我已经更新了How to get all companies from DBPedia? 的答案以包含适当的前缀定义。

标签: sparql dbpedia


【解决方案1】:

简单地获取作为dbo:Organization 或其子类实例的所有资源:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT DISTINCT ?org { ?org a/rdfs:subClassOf* dbo:Organisation . }

但是,正如您链接的问题所示,DBpedia 对返回的结果数量有上限。因此,就像上述问题的答案一样,您可以使用带有 LIMITOFFSET 的子查询来获取块中的所有结果:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT ?org {
  SELECT DISTINCT ?org {
    ?org a/rdfs:subClassOf* dbo:Organisation .
 } ORDER BY ?org
}
LIMIT 10000 OFFSET 0

这将为您提供前 10000 个结果。要获得下一个 10000,只需将 10000 添加到偏移量:LIMIT 10000 OFFSET 10000。然后,下一个 10000 使用OFFSET 20000,以此类推。

【讨论】:

  • 当我阅读您的答案时,我首先认为确实使用*(零或更多)更有效,但只是更有效的方式。但实际上它提供的结果比a|a/rdfs:subClassOf+ 更多。你会怎么解释呢?
  • 我得到的结果数量与 count disctinct (350113) 相同。
  • 确实,但是在我建议的查询中使用它,它是 350113 和 |+ 和 386676 和 *。知道为什么吗?
  • 我不知道它们为什么不同。我认为他们不应该这样做。
  • @AKSW 是的,但有问题的属性路径是 a|a/rdfs:subClassOf+a/rdfs:subClassOf*,如果我没记错的话,它们是相等的。
【解决方案2】:

您可以通过这样的查询获取所有组织,为您提供英文标签和拥有它的资源的维基百科页面:

PREFIX  rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX    o: <http://dbpedia.org/ontology/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>

SELECT DISTINCT   ?orgURI ?orgName ?Wikipedia_page

WHERE {
           ?orgURI  a                  o:Organisation .

OPTIONAL { ?orgURI  rdfs:label         ?orgName . 
                    FILTER (lang(?orgName) = "en") }

OPTIONAL { ?orgURI  ^foaf:primaryTopic ?Wikipedia_page }

}

ORDER BY ?orgName

这目前将为归类为http://dbpedia.org/ontology/Organisation 的资源返回 350033 个结果。

要同时获取http://dbpedia.org/ontology/Organisation 的子类的成员,您可以通过将属性转换为经过零个或多个rdfs:subClassOf 的属性路径来更改第一个模式:

?orgURI  a/rdfs:subClassOf*  o:Organisation

【讨论】:

    猜你喜欢
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    相关资源
    最近更新 更多