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:integer不要xsd:nonNegativeInteger比较相等。

然而,对我来说最简单的事情似乎得到了价值,Card但我真的不知道该怎么做。任何可以找到此示例的解决方案或指针将不胜感激!

4

1 回答 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.

您可以使用不太常见的数据类型 IRI 的挂钩来扩展库rdf11,例如,我使用了很多地理数据(数据类型 IRI geo:wktLiteral),我让它们rdf/[3,4]自动解释为 Prolog 众所周知的文本 (WKT) 表示法。

于 2017-12-23T08:52:32.457 回答