Sparql 如何从DBPedia获取所有组织?

Sparql 如何从DBPedia获取所有组织?,sparql,dbpedia,Sparql,Dbpedia,如何从DBpedia获取所有组织的列表? 所谓“组织”,我指的是任何类型的实体,无论是组织的一个或任何子类 我发现了这个问题,但在当前的DBpedia SPARQL web版本中,这个问题不起作用,我无法调整查询。您可以通过这样的查询获得所有组织,为您提供英文标签和维基百科页面,以获取这些资源: PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX o: <http://dbpedia.org/

如何从DBpedia获取所有组织的列表? 所谓“组织”,我指的是任何类型的实体,无论是组织的一个或任何子类


我发现了这个问题,但在当前的DBpedia SPARQL web版本中,这个问题不起作用,我无法调整查询。

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

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

要简单地获取作为
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 . }

这将为您获得前10000个结果。要获得下一个10000,只需将10000添加到偏移量:
限制10000偏移量10000
。然后,下一个10000加上偏移量20000,依此类推。

当我读到你的答案时,我首先想到使用
*
(零或更多)确实更有效,但只是更有效的方式。但事实上,它给出的结果比
a | a/rdfs:subassof+
多。你怎么解释呢?我用count disctinct(350113)得到了同样数量的结果。事实上,在我建议的查询中使用它,它是350113加|+和386676加*。知道为什么吗?我不知道他们为什么不同。我认为它们不应该这样做。@AKSW是的,但所讨论的属性路径是
a | a/rdfs:subassof+
a/rdfs:subassof*
,如果我没有弄错的话,它们是相等的。如果可以看到您尝试的查询,那就太好了。“不起作用”的意思是-什么都没有返回,结果不完整,结果错误…在链接的查询中,前缀
dbpedia owl
现在不同了
dbo
请注意,我已经更新了我的答案:过滤器不在正确的位置。我已经更新了答案,以包含适当的前缀定义。
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 . }
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