我建立一个应用程序,它显示给定文本的实体的信息。 我使用的是sparqlwrapper库Python来查询DBpedia中。 我使用下面的代码时,我得到一个Person
的实体:
def get_person_data(einfo):
data = {}
try:
uri = einfo['disambiguated']['dbpedia']
sparql = SPARQLWrapper("http://dbpedia.org/sparql")
query = u"""
SELECT ?birthDate, ?birthName, ?birthPlace
WHERE { <%s>
dbpprop:birthDate ?birthDate ;
dbpprop:birthName ?birthName ;
dbpprop:birthPlace ?birthPlace
}
""" % uri
sparql.setQuery(query)
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
这段代码的问题是,当一个字段在DBpedia中缺少页面,返回结果一无所获。 这是很难知道哪些属性出现在给定类型的所有实体,所以我想定义一些可取的属性,然后得到的那些礼物。 我试着用类似查询:
SELECT * WHERE {
?x rdfs:label "New York"@en.
?x dbpedia-owl:abstract ?abstract.
OPTIONAL {
?x dbpedia-owl:areaTotal ?areaTotal.
?x dbpprop:governor ?governor.
?x dbpprop:birthPlace ?birthPlace.
}
FILTER (LANG(?abstract) = 'en')
}
在这种情况下,纽约没有一个birthPlace
,所以我最终只获得了abstract
信息。 我想获得areaTotal
和governor
了。