2016-04-25 11 views
4

Wie bekomme ich eine Liste aller Organisationen von DBpedia? Mit "Organisation" meine ich eine Entität jedes Typs, die entweder organisation oder eine Unterklasse der Organisation ist.Wie bekomme ich alle Organisationen von DBPedia?

Ich habe die Frage How to get all companies from DBPedia? gefunden, aber das funktioniert nicht in der aktuellen DBpedia SPARQL Web Version und ich konnte die Abfrage nicht anpassen.

+1

Wäre könnte die Abfrage sehen, die Sie versucht haben. Und was "nicht funktioniert" bedeutet - hat nichts zurückgegeben, ein unvollständiges Ergebnis, das falsche Ergebnis ... – AKSW

+1

In der Abfrage Ihres Links ist das Präfix "dbpedia-owl" jetzt anders "dbo" – AKSW

+0

Bitte beachten Sie, dass ich aktualisiert habe meine antwort: der filter war nicht am richtigen ort. –

Antwort

3

einfach auf alle Ressourcen zu erhalten, die eine sind Instanz von dbo:Organization oder seiner Unterklasse:

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 . } 

da jedoch die Frage, die Sie zeigt verknüpft, hat DBpedia eine Kappe auf, wie viele Ergebnisse zurückgegeben werden. So, wie in der Antwort auf die Frage, können Sie eine Unterabfrage mit LIMIT und OFFSET verwenden, um die Ergebnisse alle in Stücke zu bekommen:

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 

Dies würde Ihnen die ersten 10.000 Ergebnisse. Um die nächsten 10000 zu erhalten, addiere einfach 10000 zum Offset: LIMIT 10000 OFFSET 10000. Dann die nächsten 10000 mit OFFSET 20000, und so weiter.

+0

Wenn ich Ihre Antwort gelesen habe, dachte ich zuerst, dass die Verwendung von '*' (null oder mehr) effizienter ist, aber nur effizienter. Aber es gibt tatsächlich mehr Ergebnisse als 'a | a/rdfs: subClassOf +'. Wie würdest du das erklären? –

+0

Ich bekomme die gleiche Anzahl von Ergebnissen mit Zählung (350113). – evsheino

+0

In der Tat, aber ich benutze es in der Abfrage, die ich vorgeschlagen habe, ist es 350113 mit | + und 386676 mit *. Irgendeine Idee warum? –

3

Sie können alle Organisationen mit einer Abfrage wie diese erhalten, können Sie englischen Label und Wikipedia-Seite für diese Ressourcen zu geben, die sie haben:

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 

Dies wird zur Zeit 350.033 Ergebnisse für diese Ressourcen zurück, die als http://dbpedia.org/ontology/Organisation klassifiziert .

Um auch die Mitglieder der Unterklassen von http://dbpedia.org/ontology/Organisation, können Sie das erste Muster zu erhalten ändern, indem Sie die Eigenschaft in eine Eigenschaft Pfad drehen gehen allerdings null oder mehr rdfs:subClassOf:

?orgURI a/rdfs:subClassOf* o:Organisation 
Verwandte Themen