prolog使用rdf_load中的source_sink错误

时间:2013-11-14 05:53:31

标签: prolog rdf

我想从此规则加载rdf网址:

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之间的`字符 我认为它应该是'
虽然网址是正确的,那该怎么办?

1 个答案:

答案 0 :(得分: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

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