“ SWI-Prolog语义Web库3.0”使您可以轻松地声明和查询RDF三元组,如下所示:
- rdf_assert(number, is, 1).
true.
?- rdf(number, is, X).
X = 1^^'http://www.w3.org/2001/XMLSchema#integer'.
如何将X从“类型限定文字”格式(描述为here)转换为标准Prolog原子:X = 1?
我找到了xsdp_convert/3,但它需要将类型('http://www.w3.org/2001/XMLSchema#integer'
)和值(1
)作为单独的参数传递。如何分解“类型限定文字”(1^^'http://www.w3.org/2001/XMLSchema#integer'
)来做到这一点?
或更妙的是:value^^type
格式实际上在Prolog中是否有意义,并允许采用更优雅的方式进行操作?
您可以使用统一,分解所获得的复合词或访问其参数:
?- use_module(library(semweb/rdf11)).
true.
?- rdf_assert(number, is, 1).
true.
?- rdf(number, is, N^^URI).
N = 1,
URI = 'http://www.w3.org/2001/XMLSchema#integer'.
?- rdf(number, is, X), X =.. List.
X = 1^^'http://www.w3.org/2001/XMLSchema#integer',
List = [^^, 1, 'http://www.w3.org/2001/XMLSchema#integer'].
?- rdf(number, is, X), arg(1, X, N).
X = 1^^'http://www.w3.org/2001/XMLSchema#integer',
N = 1.