Я пытаюсь отправить запрос через Ajax в dbperdia. Он отлично работает, но если в поисковом термине есть специальные символы, у меня всегда появляется сообщение об ошибке.запрос sparql со специальными символами
Мой код выглядит
var IKS_QUERY = "PREFIX ontology: <http://dbpedia.org/ontology/> PREFIX property: <http://dbpedia.org/property/> PREFIX resource: <http://dbpedia.org/resource/> PREFIX position:<http://www.w3.org/2003/01/geo/wgs84_pos#> SELECT DISTINCT ?Abstract ?ThumbnailURL WHERE { resource:"+where+" ontology:abstract ?Abstract. resource:"+where+" ontology:thumbnail ?ThumbnailURL. FILTER (lang(?Abstract)=\"en\")}";
var IKS_URL = "http://dbpedia.org/sparql?default-graph-uri=http%3A%2F%2Fdbpedia.org&query=" + escape(IKS_QUERY) + "&format=json";
и имеющее специальный charactes в плане поиска я получаю следующее сообщение об ошибке.
Virtuoso 37000 Error SP030: SPARQL compiler, line 3: syntax error at ',' before '_Italy'
SPARQL query:
define sql:big-data-const 0
#output-format:application/sparql-results+json
define input:default-graph-uri <http://dbpedia.org> PREFIX ontology: <http://dbpedia.org/ontology/> PREFIX property: <http://dbpedia.org/property/> PREFIX resource: <http://dbpedia.org/resource/> PREFIX position:<http://www.w3.org/2003/01/geo/wgs84_pos#> SELECT DISTINCT ?Abstract ?ThumbnailURL WHERE { resource:Venice,_Italy ontology:abstract ?Abstract. resource:wherePlaceHolder ontology:thumbnail ?ThumbnailURL. FILTER (lang(?Abstract)="en")}
любые предложения?
Заранее благодарен!
Спасибо большое за ответ. Не могли бы вы помочь мне, как следующая строка будет выглядеть как var IKS_QUERY = "PREFIX ontology: <http://dbpedia.org/ontology/> Свойство PREFIX: Ресурс PREFIX: < http://dbpedia.org/resource/> PREFIX position: SELECT DISTINCT? Аннотация? ThumbnailURL WHERE {ресурс: «+ где +» онтология: Аннотация: ресурс: «+ где +» онтология: thumbnail ThumbnailURL. FILTER (lang (? Abstract) = \ "en \")} "; –
user160820
Просто замените бит 'resource:" + where + "' с альтернативной формой полного URI, показанной в моем ответе – RobV