尝试使用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
,它会起作用。任何帮助表示赞赏。
答案 0 :(得分:1)
基于我对文档的初看,我认为您应该尝试传递一个原子而不是一个Prolog字符串,即
rdf_assert(Node, rdf:xyz, literal(type(xsd:string, foobar)))
或者仅使用literal(foobar)
或literal(lang(en, foobar))
。