用于获取 DBpedia 中所有可用人员的 SPARQL 查询仅显示部分人员数据,而不是全部
SPARQL query to get all Person available in DBpedia is showing only some Person data, not all
我正在编写 SPARQL 查询以获取 DBpedia 中可用的所有人员。我的查询是 ->
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/property/>
SELECT ?resource ?name
WHERE {
?resource rdf:type dbo:Person;
dbp:name ?name.
FILTER (lang(?name) = 'en')
}
ORDER BY ASC(?name)
当我将输出设为 HTML/csv/spreadsheet 格式时,它给出了大约 10000 行。
但是当我查询以获得总计数时
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/property/>
SELECT COUNT(*)
WHERE{
?resource rdf:type dbo:Person;
dbp:name ?name.
FILTER (lang(?name) = 'en')
}
它正在给予 -> 1783404
任何人都可以提出一个解决方案来让 Person 在 DBpedia 中可用的所有行吗?
DBPedia 在这里足够聪明,不会因大量查询而使服务器过载,并且匹配的上限为 10000。由于您要对结果进行排序,因此可以使用 LIMIT
和 OFFSET
来获取结果以 10000 为一组。例如,要获得第二组 10000 个结果,请使用:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/property/>
SELECT ?resource ?name
WHERE {
?resource rdf:type dbo:Person;
dbp:name ?name.
FILTER (lang(?name) = 'en')
}
ORDER BY ASC(?name)
LIMIT 10000 OFFSET 10000
实际上,由于 DBPedia 将结果限制为 10000 个匹配项,因此 LIMIT
并不是真正必要的。
我正在编写 SPARQL 查询以获取 DBpedia 中可用的所有人员。我的查询是 ->
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/property/>
SELECT ?resource ?name
WHERE {
?resource rdf:type dbo:Person;
dbp:name ?name.
FILTER (lang(?name) = 'en')
}
ORDER BY ASC(?name)
当我将输出设为 HTML/csv/spreadsheet 格式时,它给出了大约 10000 行。 但是当我查询以获得总计数时
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/property/>
SELECT COUNT(*)
WHERE{
?resource rdf:type dbo:Person;
dbp:name ?name.
FILTER (lang(?name) = 'en')
}
它正在给予 -> 1783404
任何人都可以提出一个解决方案来让 Person 在 DBpedia 中可用的所有行吗?
DBPedia 在这里足够聪明,不会因大量查询而使服务器过载,并且匹配的上限为 10000。由于您要对结果进行排序,因此可以使用 LIMIT
和 OFFSET
来获取结果以 10000 为一组。例如,要获得第二组 10000 个结果,请使用:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/property/>
SELECT ?resource ?name
WHERE {
?resource rdf:type dbo:Person;
dbp:name ?name.
FILTER (lang(?name) = 'en')
}
ORDER BY ASC(?name)
LIMIT 10000 OFFSET 10000
实际上,由于 DBPedia 将结果限制为 10000 个匹配项,因此 LIMIT
并不是真正必要的。