下面的代码应该返回本体中所有三元组主题的字典。相反,它以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中,并通过了本体验证。
发布于 2018-03-06 12:25:07
SPARQLWrapper()的第一个参数应该是是SPARQL端点地址:
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查询结果:
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序列化中抽象,则应该使用奥利立。
https://stackoverflow.com/questions/49101985
复制相似问题