Python:如何使用rdflib将Dbpedia中的信息添加到我的图中?

Python:如何使用rdflib将Dbpedia中的信息添加到我的图中?,python,sparql,rdflib,Python,Sparql,Rdflib,我正在创建一个本体,我想从dbpedia添加数据。例如,我想添加有关瑞士的数据。 这就是我正在做的 g = Graph() sparql = SPARQLWrapper("http://dbpedia.org/sparql") query = """ PREFIX dbo: <http://dbpedia.org/ontology/> PREFIX dbpedia: <http://dbpedia.org/resource/> PREFIX db

我正在创建一个本体,我想从
dbpedia
添加数据。例如,我想添加有关瑞士的数据。 这就是我正在做的

g = Graph()
sparql = SPARQLWrapper("http://dbpedia.org/sparql")
query = """
    PREFIX dbo:  <http://dbpedia.org/ontology/>
    PREFIX dbpedia: <http://dbpedia.org/resource/>
    PREFIX dbp: <http://dbpedia.org/property/>
    PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
    SELECT DISTINCT  ?s ?pop ?code
    WHERE{ 
       ?s rdf:type  dbo:PopulatedPlace.
       ?s dbp:iso3166code ?code.
       ?s dbo:populationTotal ?pop.
       FILTER (?s = dbpedia:Switzerland)
    }
"""
sparql.setQuery(query)
sparql.setReturnFormat(JSON)
results = sparql.query().convert()

没有更简单的方法吗?

使用SPARQL
构造
查询可能更简单,因为此查询类型返回一组本机RDF三元组:

来自rdflib导入图
从SPARQLWrapper导入SPARQLWrapper,RDF
#创建空图形
g=图()
#执行SPARQL构造查询以获取一组RDF三元组
sparql=SPARQLWrapper(“http://dbpedia.org/sparql")
sparql.addDefaultGraph(“http://dbpedia.org")
query=”“”
前缀dbpedia:
构造{
?s rdf:类型dbo:填充位置。
?s dbp:iso3166code?代码。
?s dbo:populationTotal?pop。
}何处{
?s rdf:类型dbo:填充位置。
?s dbp:iso3166code?代码。
?s dbo:populationTotal?pop。
过滤器(?s=dbpedia:瑞士)
}
"""
setQuery(查询)
尝试:
sparql.setReturnFormat(RDF)
results=sparql.query()
triples=results.convert()#这将直接转换为RDFlib图形对象
除:
打印“查询失败”
#向图形中添加三元组
g+=三元组

SPARQL
CONSTRUCT
query返回一组RDF三元组。@AKSW有可能有一个例子吗?它类似于SELECT查询:
prefix dbpedia:CONSTRUCT{s RDF:type dbo:PopulatedPlace。?s dbp:iso3166code?code。?s dbo:populationTotal?pop.}其中{s rdf:type dbo:PopulatedPlace。?s dbp:iso3166code?code。?s dbo:populationTotal?pop.FILTER(?s=dbpedia:Switzerland)}
如何将此信息添加到我的图形
g
for result in results["results"]["bindings"]:
    N = int(result["pop"]["value"])
totPopulation   = Literal(N)
g.add(( cName, RDF.type, dbo.Country))
g.add(( cName, dbo.populationTotal, totPopulation ))
g.add(( cName, dbp.iso3166code, Literal(str(result["code"]["value"])) ))