带有特殊字符的sparql查询

时间:2012-02-15 13:47:02

标签: sparql dbpedia

我正在尝试通过Ajax向dbperdia发送查询。它工作正常,但如果搜索词中包含特殊字符,我总会得到一条错误信息。

我的代码看起来像

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";

并且在搜索字词中有特殊字符我收到以下错误消息。

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")}

有什么建议吗?

提前致谢!

1 个答案:

答案 0 :(得分:3)

您生成的查询无效,这与您通过AJAX发送无关。请注意,Virtuoso错误消息中的查询具有resource:Venice,_Italy这样的非法SPARQL语法。

一种解决方法是在这里使用完整的URI,因此不应使用构建QNames作为当前的JS,而应构建完整的URI,例如。

<http://dbpedia.org/resource/" + where + ">

而不是像你现在这样的QNames:

resource:" + where + "