Как добавить специальные категории в sparqlwrapper в python - PullRequest
0 голосов
/ 17 марта 2019

Я использую следующий запрос sparql с использованием sparqlwrapper следующим образом.

from SPARQLWrapper import SPARQLWrapper, JSON
sparql = SPARQLWrapper("http://live.dbpedia.org/sparql")
sparql.setReturnFormat(JSON)
my_category = 'dbc:Meteorological_concepts'
sparql.setQuery(f" ASK {{ {my_category}  skos:broader{{1,3}} dbc:Medicine }} ")
results = sparql.query().convert()
print(results['boolean'])

Как уже упоминалось выше, он отлично работает с категориями, которые не имеют скобок (например, dbc:Meteorological_concepts). Однако при вводе категории в скобках (т. Е. my_category = dbc:Elasticity_(physics)) появляется следующая ошибка.

b"Virtuoso 37000 Error SP030: SPARQL compiler, line 4: syntax error at 'physics' before ')'\n\nSPARQL query:\ndefine sql:big-data-const 0 \n#output-format:application/sparql-results+json\n\n    ASK { dbc:Elasticity_(physics) skos:broader{1,3} dbc:Medicine }\n"
CRITICAL: Exiting due to uncaught exception <class 'SPARQLWrapper.SPARQLExceptions.QueryBadFormed'>

Есть ли способ решить эту проблему.

Я рад предоставить более подробную информацию, если это необходимо.

1 Ответ

2 голосов
/ 18 марта 2019

Я переписываю то, что @StanislavKralin упомянул в приведенном выше комментарии.Я всегда стараюсь использовать полный URL в коде SPARQL, особенно когда в запросе SPARQL есть специальный символ.

from SPARQLWrapper import SPARQLWrapper, JSON
sparql = SPARQLWrapper("http://live.dbpedia.org/sparql")
sparql.setReturnFormat(JSON)
my_category = '<http://dbpedia.org/resource/Category:Elasticity_(physics)>'
sparql.setQuery(f" ASK {{ {my_category}  skos:broader{{1,3}} dbc:Medicine }} ")
results = sparql.query().convert()
print(results['boolean'])
...