1

我有以下通过 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 端点使用类似的代码不会引发错误。

4

0 回答 0