Sparqlwrapper: он ничего не возвращает, но запрос работает с dbpedia.org/sparql - PullRequest
0 голосов
/ 27 ноября 2018

Я также добавил фрагмент ниже.Этот запрос вернет название компании 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()

1 Ответ

0 голосов
/ 10 декабря 2018

избавьтесь от \\b в вашем regex выражении, и это работает!(я не знаю, зачем это нужно, так как tata steel - это целое слово)

Также вам нужно передать query1!к вашей функции!и используйте sparql.setReturnFormat('json') не JSON,

cheers

...