使用rdf\U加载时prolog中的source\U sink错误

使用rdf\U加载时prolog中的source\U sink错误,prolog,rdf,Prolog,Rdf,我想从此规则加载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_U

我想从此规则加载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)
.
当输入为例如“Hugh Jackman”时
它告诉错误:

ERROR: [Thread pdt_console_client_0_Default Process] source_sink `http://dbpedia.org/data/Hugh_Jackman.rdf' does not exist
我真的很关心http和
source\u sink之间的`字符
我想应该是


虽然url是正确的,但是如何处理该错误呢?

您应该将atom传递给
rdf\u load
,而不是字符串。这种行为(误导性错误消息,不接受字符串)可能是一个bug

这对我很有用:

?- 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

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

回执很好。您确定加载了
库(“semweb/rdf\u http\u插件”)
?在加载之前尝试调用
rdf_load
会在从http服务器读取时导致此错误。为了澄清“倒勾很好”:单引号和双引号实际上在排版中是平衡的(“”),即使大多数键盘没有这些字符。在计划文本中编写时,模拟这种情况的一种方法是使用反勾号(
`
)作为左单引号,使用单引号
'
作为右单引号。似乎这就是此错误消息的用途。