Ошибка при попытке сохранить одну тройку rdf с помощью rdf_save в файл - PullRequest
0 голосов
/ 06 января 2019

Попытка сохранить rdf-тройки в файл с помощью пакета semweb в swi-prolog, но продолжает выдавать ошибку, и тройки не сохраняются правильно.

Следующий небольшой код показывает проблему с версией swi-prolog 7.6.4 в Ubuntu Bionic.

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 голосов
/ 07 января 2019

Исходя из моего первого взгляда на документы, я думаю, вам следует попробовать передать атом вместо строки Пролога, т.е.

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

или, возможно, просто literal(foobar) или literal(lang(en, foobar)).

...