访问三元组对象的文字值

问题描述 投票:1回答:1

我正在研究验证龟文件的验证器。当处理函数来检查所声明的基数是否对每个对象都是正确的时,我无法弄清楚如何访问文字的值。

字面值是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:integerxsd:nonNegativeInteger不相等。

然而,对我来说最简单的事情似乎是获得Card的价值,但我真的不知道该怎么做。任何解决方案或指针在哪里找到这样的例子将非常感谢!!

prolog swi-prolog turtle-rdf cliopatria
1个回答
1
投票

如果使用库rdf11,则大多数常见数据类型IRI会自动解释为Prolog值。换句话说:根本不需要从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]自动解释为Prolog Well-Known Text(WKT)表示法。

© www.soinside.com 2019 - 2024. All rights reserved.