3

次の SPARQL クエリをパラメトリックにするのに苦労しています。

まず、リクエスト ライブラリをロードします。

?- use_module(library(semweb/sparql_client)).
%   library(uri) compiled into uri 0.02 sec, 290,256 bytes
%   library(readutil) compiled into read_util 0.00 sec, 17,464 bytes
%   library(socket) compiled into socket 0.00 sec, 11,936 bytes
%   library(option) compiled into swi_option 0.00 sec, 14,288 bytes
%   library(base64) compiled into base64 0.00 sec, 17,912 bytes
%   library(debug) compiled into prolog_debug 0.00 sec, 21,864 bytes
%  library(http/http_open) compiled into http_open 0.03 sec, 438,368 bytes
%   library(sgml) compiled into sgml 0.00 sec, 39,480 bytes
%     library(quintus) compiled into quintus 0.00 sec, 23,896 bytes
%    rewrite compiled into rewrite 0.01 sec, 35,336 bytes
%    library(record) compiled into record 0.00 sec, 31,368 bytes
%   rdf_parser compiled into rdf_parser 0.01 sec, 132,840 bytes
%    library(gensym) compiled into gensym 0.00 sec, 4,792 bytes
%   rdf_triple compiled into rdf_triple 0.00 sec, 39,672 bytes
%  library(rdf) compiled into rdf 0.01 sec, 244,240 bytes
% library(semweb/sparql_client) compiled into sparql_client 0.04 sec, 707,080 bytes
true.

ご覧のとおり、うまく機能しているように見える次のクエリがあります。

?- sparql_query('select COUNT(*) where {?place a dbpedia-owl:Place ; rdfs:label "Pescara"@it.}', Row, [ host('dbpedia.org'), path('/sparql/')]).
Row = row(literal(type('http://www.w3.org/2001/XMLSchema#integer', '1'))).

私の問題は、このクエリをパラメトリックにしたいということです。前の例では、Pescara値が固定されており、変数にする必要があります。私は次のようなものを持っています:

?- Place = 'Roma'

およびクエリで:

 ?- sparql_query('select COUNT(*) where {?place a dbpedia-owl:Place ; rdfs:label $Place@it.}', Row, [ host('dbpedia.org'), path('/sparql/')]).

これはうまくいかないようです。

4

1 に答える 1