1

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

助言がありますか?

前もって感謝します!

4

1 に答える 1

3

生成されたクエリは無効です。これは、AJAX 経由で送信したこととは関係ありません。Virtuoso のエラー メッセージのクエリには、resource:Venice,_Italy不正な SPARQL 構文のようなものが含まれていることに注意してください。

回避策の 1 つは、ここで完全な URI を使用することです。そのため、現在の JS のように QName を構築する代わりに、完全な URI を構築する必要があります。

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

現在行っているような QNames の代わりに:

resource:" + where + "
于 2012-02-15T18:10:36.107 に答える