SPARQLWrapper 未返回 JSON
SPARQLWrapper not returning JSON
下面的代码应该return ontology中所有三元组的主语字典。相反,它 return 将整个 ontology 作为 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()
以上代码在不同的 ontology 下运行良好,这表明 ontology 是问题所在。我不确定 ontology 可能是什么问题。我用 Protege 生成了 ontology,它可以加载到 vOWL 中,并且通过了 vOWL 的 ontology 验证。
SPARQLWrapper()
的第一个参数 should be 一个 SPARQL 端点地址:
- sparqlwrapper 无法对 RDF 文件执行 SPARQL 查询。
- 如果要查询 RDF 文件,应使用 rdflib.
将其加载到本地存储中
from rdflib import Graph
g = Graph()
g.parse("http://purl.org/sudo/ontology/sudo.owl", format="xml")
qres = g.query("""
SELECT DISTINCT ?s {
?s ?p ?o
}""")
for row in qres:
print("%s" % row)
如果您确实需要JSON格式的SPARQL查询结果(spec):
import sys
from rdflib import Graph
from rdflib.plugins.sparql.results.jsonresults import JSONResultSerializer
g = Graph()
g.parse("http://purl.org/sudo/ontology/sudo.owl", format="xml")
qres = g.query("""
SELECT DISTINCT ?s {
?s ?p ?o
}""")
JSONResultSerializer(qres).serialize(sys.stdout)
如果你想从RDF序列化中抽象出来,你应该使用owlready。
下面的代码应该return ontology中所有三元组的主语字典。相反,它 return 将整个 ontology 作为 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()
以上代码在不同的 ontology 下运行良好,这表明 ontology 是问题所在。我不确定 ontology 可能是什么问题。我用 Protege 生成了 ontology,它可以加载到 vOWL 中,并且通过了 vOWL 的 ontology 验证。
SPARQLWrapper()
的第一个参数 should be 一个 SPARQL 端点地址:
- sparqlwrapper 无法对 RDF 文件执行 SPARQL 查询。
- 如果要查询 RDF 文件,应使用 rdflib. 将其加载到本地存储中
from rdflib import Graph
g = Graph()
g.parse("http://purl.org/sudo/ontology/sudo.owl", format="xml")
qres = g.query("""
SELECT DISTINCT ?s {
?s ?p ?o
}""")
for row in qres:
print("%s" % row)
如果您确实需要JSON格式的SPARQL查询结果(spec):
import sys
from rdflib import Graph
from rdflib.plugins.sparql.results.jsonresults import JSONResultSerializer
g = Graph()
g.parse("http://purl.org/sudo/ontology/sudo.owl", format="xml")
qres = g.query("""
SELECT DISTINCT ?s {
?s ?p ?o
}""")
JSONResultSerializer(qres).serialize(sys.stdout)
如果你想从RDF序列化中抽象出来,你应该使用owlready。