我有一个 csv 文件example.csv
其中包含两列,标题为 var1 和 var2。
我想填充一个最初为空的 Prolog 知识库文件import.pl
具有重复的事实,而每一行example.csv
处理方式相同:
fact(A1, A2).
fact(B1, B2).
fact(C1, C2).
我如何在 SWI-Prolog 中对此进行编码?
编辑,基于@Shevliaskovic 的回答:
:- use_module(library(csv)).
import:-
csv_read_file('example.csv', Data, [functor(fact), separator(0';)]),
maplist(assert, Data).
When import.
在控制台中运行时,我们完全按照请求的方式更新知识库(除了知识库直接在内存中更新,而不是通过文件和后续查询来更新这一事实)。
Check setof([X, Y], fact(X,Y), Z).
:
Z = [['A1', 'A2'], ['B1', 'B2'], ['C1', 'C2'], [var1, var2]].