我还添加了以下代码段。该查询将返回公司uri的名称,名称和母公司。它与DBpedia.org/sparql一起使用,但与sparqlwrapper一起使用(不返回任何内容;)
query1 = """
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/property/>
PREFIX db: <http://dbpedia.org/resource/>
select distinct ?iri ?name ?parent (concat('[',group_concat(distinct ?location;separator=','),']') as ?location)
{
?iri a dbo:Company ;
rdfs:label ?label ;
foaf:name ?name
OPTIONAL { ?iri dbo:parentCompany ?parent.
filter (!isBlank(?parent)) }
OPTIONAL { ?iri dbo:location ?location.}
filter(regex(?name, "\\btata steel\\b","i" )) .
filter(regex(?label, "\\btata steel\\b","i" ))
}
GROUP BY ?iri ?name ?parent
"""
def get_country_description(query1):
sparql = SPARQLWrapper("http://dbpedia.org/sparql")
sparql.setReturnFormat('json')
sparql.setQuery(query1) # the previous query as a literal string
return sparql.query().convert()
答案 0 :(得分:0)
在您的\\b
表达式中删除regex
,就可以了! (我不知道为什么要使用它,因为tata steel
是一个完整的词)
还需要传递query1
!发挥作用!
并使用sparql.setReturnFormat('json')
而不是JSON,
欢呼