私はタートルファイルを検証するバリデーターに取り組んでいます。記述されている基数が各オブジェクトに対して正しいかどうかを調べる関数を操作するとき、リテラルの値にアクセスする方法を理解できません。トリプルのオブジェクトのリテラル値へのアクセス
リテラル値は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
という値を得ているようですが、どうやってそれを行うのか本当に分かりません。どのような解決策やポインタがあれば、この例を見つけることができます。
最終的に解決しました。リロラルから値を取得するには、Prologの統一を有効に利用できます。 'parse_literal(Lit、N): - Lit = N ^^ _ Type.' まだまだ改善の余地があります。 – MacHeath