prolog - 在 SWI Prolog 中从 RDF“类型限定文字”转换为 Prolog 原子
问题描述
“SWI-Prolog Semantic Web Library 3.0”允许您轻松地断言和查询 RDF 三元组,如下所示:
- rdf_assert(number, is, 1).
true.
?- rdf(number, is, X).
X = 1^^'http://www.w3.org/2001/XMLSchema#integer'.
如何将 X 从“类型限定文字”格式(在此处描述)转换为标准 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.
推荐阅读
- python-3.x - 通过运行 python 脚本将屏幕截图添加到 excel VBA 用户窗体(Uning opencv python 代码)
- java - 如何使用当前 JFrame 中的组合框从另一个类中的 JPanel 更改表的值
- reactjs - 发布请求在邮递员中工作,但在浏览器上不起作用
- r - 回归 - PCA - 如何处理变量?
- c# - 自动检测到的 Word 可填写字段的 Acrobat PDF 转换中不需要的字符。使用 iTextSharp5 删除可填充字段字符
- javascript - javascript 在异步数据完成后执行功能
- python - 我尝试使用从网站 uning selenium 获取的数字进行计算,但在 str 到 int 转换时卡住了
- node.js - 使编码事物不确定为什么它不起作用-NodeJS
- javascript - JS:如何在被窗口事件调用时获取“this”
- javascript - 为什么返回一个空数组?AJAX