使用rdflib为带有sparqlWrapper的sparql“SELECT”查询的输出构建图
我正试图从SPARQL查询的结果中构造一个图。为了构造查询,我使用SparqlWrapper和DBpedia作为知识库使用rdflib为带有sparqlWrapper的sparql“SELECT”查询的输出构建图,sparql,dbpedia,rdflib,sparqlwrapper,Sparql,Dbpedia,Rdflib,Sparqlwrapper,我正试图从SPARQL查询的结果中构造一个图。为了构造查询,我使用SparqlWrapper和DBpedia作为知识库 from SPARQLWrapper import SPARQLWrapper, JSON from rdflib import Namespace, Graph, URIRef from rdflib.namespace import RDF, FOAF g = Graph() name = "Asturias" #labelName = URIRef("<http:/
from SPARQLWrapper import SPARQLWrapper, JSON
from rdflib import Namespace, Graph, URIRef
from rdflib.namespace import RDF, FOAF
g = Graph()
name = "Asturias"
#labelName = URIRef("<http://dbpedia.org/resource/" + name +">")
sparql = SPARQLWrapper("http://dbpedia.org/sparql")
sparql.setQuery("""
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dbr: <http://dbpedia.org/resource/>
SELECT *
WHERE { dbr:Asturias ?predicate ?object }
""")
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
for result in results["results"]["bindings"]:
predicate = result["predicate"]["value"]
object = result["object"]["value"]
print(name , predicate , object)
g.add((name, predicate, object))
print(len(g))
g.serialize(destination='./resources/testg.n3', format='n3')
还有更多的结果,但我正在寻找一种从结果构建一个图的方法,以便它与现有的图/合并
这给我带来了一个错误
in add
"Predicate %s must be an rdflib term" % (p,)
AssertionError: Predicate http://www.w3.org/1999/02/22-rdf-syntax-ns#type must be an rdflib term
问题是输出JSON的值类似于此错误消息应该足够清楚。您必须从字符串值中创建RDF术语:实际上,更好的选择是使用SPARQL构造查询,它实际上返回一组三元组。错误消息应该足够清楚。您必须从字符串值中创建RDF术语:实际上,更好的选择是使用SPARQL构造查询,它实际上返回一组三元组
in add
"Predicate %s must be an rdflib term" % (p,)
AssertionError: Predicate http://www.w3.org/1999/02/22-rdf-syntax-ns#type must be an rdflib term