![](/img/trans.png)
[英]Test for a resource type of a dbpedia page using rdflib and python
[英]Python: how to add information from Dbpedia to my graph using rdflib?
我正在創建一個本體,我想從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()
然后我將我提取的信息添加到我的圖表中
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"])) ))
有沒有更簡單的方法呢?
使用SPARQL CONSTRUCT
查詢可能更容易,因為此查詢類型返回一組本機RDF三元組:
from rdflib import Graph
from SPARQLWrapper import SPARQLWrapper, RDF
# create empty graph
g = Graph()
# execute SPARQL CONSTRUCT query to get a set of RDF triples
sparql = SPARQLWrapper("http://dbpedia.org/sparql")
sparql.addDefaultGraph("http://dbpedia.org")
query = """
PREFIX dbpedia: <http://dbpedia.org/resource/>
CONSTRUCT {
?s rdf:type dbo:PopulatedPlace.
?s dbp:iso3166code ?code.
?s dbo:populationTotal ?pop.
} WHERE{
?s rdf:type dbo:PopulatedPlace.
?s dbp:iso3166code ?code.
?s dbo:populationTotal ?pop.
FILTER (?s = dbpedia:Switzerland)
}
"""
sparql.setQuery(query)
try :
sparql.setReturnFormat(RDF)
results = sparql.query()
triples = results.convert() # this converts directly to an RDFlib Graph object
except:
print "query failed"
# add triples to graph
g += triples
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.