2016-07-12 15 views
1

Ich schreibe SPARQL Abfrage, um alle Person in DBpedia verfügbar zu bekommen. Meine Frage ist ->SPARQL Abfrage, um alle Person in DBpedia verfügbar zu bekommen zeigt nur einige Personendaten, nicht alle

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) 

Es gibt rund 10000 Zeilen, wenn ich die Ausgabe nehme als HTML/CSV/Tabellenformat. Aber wenn ich Abfrage gebe Gesamtzahl

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') 
} 

Es gibt zu bekommen -> 1783404

Kann mir jemand eine Lösung vorschlagen, alle Zeilen Person in DBpedia zu bekommen?

Antwort

2

DBPedia wird klug genug, hier nicht mit großen Abfragen seine Server zu überlasten, und Capping Matches bei 10000. Da Sie die Ergebnisse bestellen, können Sie LIMIT und OFFSET verwenden in Sätzen von 10000. Zum Beispiel führen zu bekommen, zu erhalten den zweiten Satz von 10000 Ergebnisse verwenden diese:

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 

eigentlich seit DBPedia, um die Ergebnisse zu 10000 Matches zu begrenzen, ist die LIMIT nicht wirklich notwendig.

+0

@alle, die hier aktiv sind: Ich weiß nicht, wie oft das der Grund für Fragen hier war, aber gibt es irgendeinen Weg, etwas klebrig zu machen? Vielleicht werden die Leute diese Antwort leichter finden. – AKSW