尝试使用rdf_save将单个rdf三元组保存到文件时抛出错误

时间:2019-01-06 02:08:39

标签: prolog rdf swi-prolog

尝试使用swi-prolog中的semweb软件包将rdf三元组保存到文件中,但是不断出现错误,并且三元组没有正确保存。

以下小代码显示了Ubuntu Bionic上swi-prolog版本7.6.4的问题。

PS:请忽略“ rdf:xyz”谓词,因为我倾向于使用它而不需要添加新的前缀

:- use_module(library(semweb/rdf_db)).

assert_test :-
    rdf_bnode(Node),
    rdf_assert(Node, rdf:xyz, literal(type(xsd:string, "foobar"))),
    rdf_save('foo.xml').

我收到以下错误(仅显示顶行):

ERROR: Unknown error term: save_attribute_value("foobar")
ERROR: In:
ERROR:   [25] throw(error(save_attribute_value("foobar"),_980))
.
.
.

文件已创建,但没有完整的三元组。

一个有趣的旁注,如果我使用rdf_save_turtle而不是rdf_save,它会起作用。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

基于我对文档的初看,我认为您应该尝试传递一个原子而不是一个Prolog字符串,即

rdf_assert(Node, rdf:xyz, literal(type(xsd:string, foobar))) 

或者仅使用literal(foobar)literal(lang(en, foobar))