Python SPARQLWrapper不返回JSON

Python SPARQLWrapper不返回JSON,python,sparql,protege,sparqlwrapper,rdflib,owlready,Python,Sparql,Protege,Sparqlwrapper,Rdflib,Owlready,下面的代码应该返回本体中所有三元组主题的字典。相反,它以XML字符串的形式返回整个本体 from SPARQLWrapper import SPARQLWrapper, JSON sparql = SPARQLWrapper("http://purl.org/sudo/ontology/sudo.owl") sparql.setQuery(""" SELECT ?subject WHERE {?subject ?verb ?object} """) sparql.s

下面的代码应该返回本体中所有三元组主题的字典。相反,它以XML字符串的形式返回整个本体

from SPARQLWrapper import SPARQLWrapper, JSON

sparql = SPARQLWrapper("http://purl.org/sudo/ontology/sudo.owl")
sparql.setQuery("""
    SELECT ?subject
    WHERE {?subject ?verb  ?object}
    """)

sparql.setReturnFormat(JSON)
results = sparql.query().convert()
print results.keys()
上面的代码适用于不同的本体,这表明本体就是问题所在。我不确定本体的问题是什么。我用Protege生成了本体,它可以加载到vOWL中,并通过了vOWL的本体验证。

SPARQLWrapper()
的第一个参数是SPARQL端点地址:

  • 无法对RDF文件执行SPARQL查询
  • 如果要查询RDF文件,应该使用将其加载到本地存储中
来自rdflib导入图
g=图()
g、 解析(“http://purl.org/sudo/ontology/sudo.owl,format=“xml”)
qres=g.query(“”)
选择不同的{
?s?p?o
}""")
对于QRE中的行:
打印(“%s”%行)
如果您确实需要JSON格式()的SPARQL查询结果:

导入系统 从rdflib导入图 从rdflib.plugins.sparql.results.jsonresults导入JSONResultSerializer g=图() g、 解析(“http://purl.org/sudo/ontology/sudo.owl,format=“xml”) qres=g.query(“”) 选择不同的{ ?s?p?o }""") JSONResultSerializer(qres).序列化(sys.stdout)
如果您希望从RDF序列化中提取,应该使用。

您可以共享本体吗?@Ignazio我认为它就是示例中的本体吗?mac389,您确定
SOARQLWrapper
接受远程RDF文件路径作为参数吗?好的,这应该是SPARQL端点地址(在大多数情况下以
SPARQL
结尾)。如果您想查询RDF文件,也许您应该将其加载到本地存储中,可能使用.Stanislav是正确的,甚至第一句话也清楚地表明了这一点:“这是SPARQL服务的包装器”没有内置的三重存储,它只是SPARQL HTTP ProtocolowReady的包装器是一个不错的选择,但它需要Python 3。对于这个项目,我坚持使用2.7。