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

Error thrown on trying to save a single rdf triple using rdf_save to a file

尝试使用 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,它会起作用。感谢任何帮助。

根据我对文档的第一眼浏览,我认为您应该尝试传递一个原子而不是 Prolog 字符串,即

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

或者可能只使用 literal(foobar)literal(lang(en, foobar)).