如何正确序列化wikidata SPARQL查询答案?

时间:2016-11-10 13:16:11

标签: python sparql wikidata sparqlwrapper

我有以下通过Python的SPARQLWrapper查询wikidata的示例:

import rdflib, urllib
from SPARQLWrapper import SPARQLWrapper, JSON, XML, TURTLE, RDF, N3 
from rdflib import Graph, Namespace, URIRef, RDF#, RDFS, Literal    

def graph_full(uri, f)
    sparql = SPARQLWrapper('https://query.wikidata.org/sparql')
    sparql.setQuery('''
    PREFIX entity: <http://www.wikidata.org/entity/>

    SELECT ?predicate ?object WHERE {
        <'''+urllib.unquote(uri).encode("utf8")+'''> ?predicate ?object .
    } LIMIT 100
    ''')

    sparql.setReturnFormat(N3)
    results = sparql.query().convert()
    #print results.serialize()

    print type(results)
    g = Graph()
    g.parse(results)
    print g 
    #g.serialize(f, format="n3")

if __name__ == '__main__':
    graph_full("entity:Q76", "wikidata/output.nt")

我想序列化SPARQL查询的结果并将其保存到文件中。这似乎总是抛出以下错误:

Exception: Unexpected type '<type 'instance'>' for source    '<xml.dom.minidom.Document instance at 0x7fa11e3715a8>'

对DBpedia SPARQL端点使用类似的代码不会引发任何错误。

0 个答案:

没有答案