2012-05-21 6 views
7

Mit SPARQL \ SPARQLWRApper in Python, wie kann ich für die Werte einer bestimmten dbpedia-Ressource abfragen? Wie kann ich beispielsweise die Werte dbpedia-owl: wikiPageExternalLink von http://dbpedia.org/page/Asturias abrufen? Hier ist ein einfaches Beispiel, wie ich das rdfs: Label von Asturias abfragen kann. Aber ich weiß nicht, wie man die Abfrage-/Abfrageparameter ändert, um Werte der Eigenschaft/Ontologie anders als jene zu erhalten, die im rdfs Schema enthalten werden. Hier ist das Beispiel:Wie abzufragen dbpedia Ressource Ontologie 'wikiPageExternalLink'

from SPARQLWrapper import SPARQLWrapper, JSON, XML, N3, RDF 
sparql = SPARQLWrapper("http://dbpedia.org/sparql") 
sparql.setQuery(""" 
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
    SELECT ?label 
    WHERE { <http://dbpedia.org/resource/Asturias> rdfs:label ?label } 
""") 
print '\n\n*** JSON Example' 
sparql.setReturnFormat(JSON) 
results = sparql.query().convert() 
for result in results["results"]["bindings"]: 
    print result["label"]["value"] 

Ich hoffe, Feedback zu erhalten. Danke im Voraus!

Antwort

7

nicht sicher, wo Sie aufgeklebte das hier ist wirklich einfach:

SELECT ?label 
WHERE { <http://dbpedia.org/resource/Asturias> 
      dbpedia-owl:wikiPageExternalLink ?label } 

Normalerweise müssen Sie die Namespacepräfixe wie rdfs: oder dbpedia-owl: erklären, wenn man sich in der Abfrage verwenden mag, aber auf dem DBpedia Endpunkt funktioniert das auch ohne. Wenn Sie möchten, können Sie sie erklären sowieso:

PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> 
SELECT ?label 
WHERE { <http://dbpedia.org/resource/Asturias> 
      dbpedia-owl:wikiPageExternalLink ?label } 

können Sie den vollständigen URI an das Präfix entsprechend herausfinden, indem auf http://dbpedia.org/sparql gehen und auf „Namespacepräfixe“ in der rechten oberen Ecke.

Wenn Sie die Variable (zum Beispiel von ?label zu ?link) umbenennen möchten dann tun Sie es wie folgt aus:

PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> 
SELECT ?link 
WHERE { <http://dbpedia.org/resource/Asturias> 
      dbpedia-owl:wikiPageExternalLink ?link } 

und Sie haben auch "label"-"link" im Python-Code zu ändern, die den Wert bekommt aus dem JSON-Ergebnis.

+0

danke für die Rückmeldung. Aber was soll ich unter "Standard-Datensatzname (Graph IRI)" von SPARQL? Noch einmal Danke! – jaysonpryde

+2

Lassen Sie das Feld einfach allein – cygri