如何获得猫头鹰:dbpedia中的萨摩亚

时间:2019-06-23 09:28:32

标签: sparql rdf dbpedia wikidata linked-data

我正在使用以下查询,使用owl:sameas从dbpedia页面获取Wikidata ID。

SELECT distinct ?wikidata_concept 
WHERE {<http://dbpedia.org/resource/Category:Michael_Jackson> owl:sameAs ?wikidata_concept 
FILTER(regex(str(?wikidata_concept), "www.wikidata.org" ) )} 
LIMIT 100

它在Virtuoso SPARQL Query Editor上正常工作。我得到http://www.wikidata.org/entity/Q7215695作为正确答案。

但是,当我尝试在python中使用SPARQLWrapper做同样的事情时,我没有得到以上答案(基本上数据框为空)。

我的python代码如下。

import pandas as pd
from SPARQLWrapper import SPARQLWrapper, JSON

sparql = SPARQLWrapper("http://live.dbpedia.org/sparql")
item = "http://dbpedia.org/resource/Category:Michael_Jackson"
sparql.setQuery(f"SELECT distinct ?wikidata_concept WHERE {{<{item}> owl:sameAs ?wikidata_concept FILTER(regex(str(?wikidata_concept), \"www.wikidata.org\" ) )}} LIMIT 100")
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
print(results)
results_df = pd.io.json.json_normalize(results['results']['bindings'])
print(results_df)

请让我知道我在哪里弄错了。如果需要,我很乐意提供更多详细信息。

1 个答案:

答案 0 :(得分:2)

DBpedia有2个版本。所以,之所以得到两个结果,是因为我在两种方法中使用了不同的版本。

sparql = SPARQLWrapper("http://live.dbpedia.org/sparql")更改为sparql = SPARQLWrapper("http://dbpedia.org/sparql")解决了我的问题。因此,我在查询编辑器和python代码中使用了相同的dbpedia版本。