Доступ к буквальному значению объекта Triple

Я работаю над валидатором, который проверяет файлы черепах. Работая над функцией для проверки правильности указанного количества элементов для каждого объекта, я не могу понять, как получить доступ к значению литерала.

Буквальное значение Card=literal(type(xsd:nonNegativeInteger, '1')) (или же 1^^'http://www.w3.org/2001/XMLSchema#nonNegativeInteger').

Я нахожу сумку со свойствами длины L. Как я могу проверить, что L == Card?

Я уже попробовал следующее:

% L and Card are both 1
rdf_canonical_literal(L, LiteralL), rdf_compare(=, LiteralL, Card).
% false

rdf_canonical_literal(L, LiteralL).
% LiteralL = 1^^'http://www.w3.org/2001/XMLSchema#integer'.

Проблема в том, что xsd:integer а также xsd:nonNegativeInteger не сравнивайте как равные

Тем не менее, мне кажется, что проще всего получить значение Card но я действительно не понимаю, как это сделать. Любые решения или указатели, где можно найти пример этого, будут высоко оценены!

1 ответ

Если вы используете библиотеку rdf11 тогда наиболее распространенные IRI типа данных автоматически интерпретируются как значения Пролога. Другими словами: нет необходимости вообще преобразовывать литералы RDF в значения Prolog. Пример:

?- [library(semweb/rdf11)].
?- rdf_assert(rdf:a, rdf:b, 1^^xsd:int).
?- rdf(_S, _P, N^^xsd:int).
N = 1.

Вы можете расширить библиотеку rdf11 с ловушкой для менее распространенных типов IRI, например, я использую много географических данных (тип данных IRI geo:wktLiteral) который я позволил rdf/[3,4] интерпретировать как нотацию Пролог хорошо известного текста (WKT) автоматически.

Другие вопросы по тегам