4

我想从此规则加载 rdf url:

getActorFilms(Actor_Name,Films):-
    my_replace(Actor_Name, ' ', '_', Correct_Syntax_Of_Actor_Name),
    string_concat('http://dbpedia.org/data/',Correct_Syntax_Of_Actor_Name, URL_TO_LOAD),
    string_concat(URL_TO_LOAD,'.rdf',RDF_URL),
    rdf_load(RDF_URL),
    rdf(Films, 'http://dbpedia.org/ontology/starring', Object)
.

当输入例如“休杰克曼”示例时,
它会告诉错误:

ERROR: [Thread pdt_console_client_0_Default Process] source_sink `http://dbpedia.org/data/Hugh_Jackman.rdf' does not exist

我真的很担心http之间的`source_sink
字符, 我认为它应该是'
虽然url是正确的,那么如何处理那个错误呢?

4

1 回答 1

3

您应该将原子传递给rdf_load,而不是字符串。这种行为(误导性错误消息,不接受字符串)可能是一个错误。

这对我有用:

?- use_module(library('semweb/rdf_db')).
true.

?- use_module(library('semweb/rdf_http_plugin')).
true.

?- rdf_load('http://dbpedia.org/data/Hugh_Jackman.rdf').
% Parsed "http://dbpedia.org/data/Hugh_Jackman.rdf" in 0.02 sec; 371 triples
true.

?- string_to_atom(S, 'http://dbpedia.org/data/Hugh_Jackman.rdf'), rdf_load(S).
ERROR: source_sink `http://dbpedia.org/data/Hugh_Jackman.rdf' does not exist

我希望这能解决你的问题。

于 2013-11-14T07:01:02.107 回答