prolog - 在 Prolog 中存储数据

标签 prolog

我正在 Prolog 中构建一个基本的拉丁语翻译器。我有目前以这种格式存储的数据作为谓词:

noun("femin","femin",1,"f",translation("woman","women")).

verb("port", "portare", "portav", "portat", 1, translation("carry","carrying","carried")).

nounending("ae","with",sg).

我宁愿使用电子表格之类的东西来输入名词和动词。我想过将 .csv 解析为 .pl,但这是一个笨拙的解决方案。有没有一种方法可以使用类似电子表格的应用程序轻松地在 SWI-Prolog 中输入谓词?

最佳答案

I would rather use something like a spreadsheet to input the nouns and verbs.

电子表格是描述实体之间实时功能关系的方式,但我担心您将不得不硬着头皮走笨拙的方式,阅读 CSV。

没那么糟糕,例如 SWI-Prolog 有一个 CSV library ,或者您可以将其用作案例研究(假设您对 Prolog 感兴趣)并编写您自己的 DCG。非常有益的练习...

另一种可能性,如果您可以在电子表格端编写一些代码,您可以以 Prolog 格式输出电子表格的单元格:

cell(1,1,'Hello').
cell(1,2,'World').

或者考虑任何关系编辑器(您首选的“数据库管理工具”)可能对输入表格数据有用,并且从那时起您可以使用 Prolog RDB 接口(interface)(如 ODBC)访问它。

注意:电子表格通常很容易保存在表格中。然后授予通过 RDB 的访问权限。

编辑 我想到,在保存表(作为 SQL 转储)后,pack(prosqlite) - 在 SWI-Prolog 中 - 将授予您访问最有值(value)的单元格的权限:)

关于prolog - 在 Prolog 中存储数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20440334/

相关文章:

prolog - 如何在 SWI-Prolog 的所有统一中启用发生检查?

memory-management - 为什么 gprolog 需要这么多内存?

prolog - 双重否定作为失败的输出困惑

prolog - 在递归/回溯中累积

list - Prolog 列表未在控制台上打印所有元素

prolog - Prolog 查询中的递归

prolog - 如何在 SICStus Prolog 中检查 WAM 代码

prolog - Prolog,使用表达式

prolog - map 列表错误?

prolog - 覆盖 Prolog 中预定义的谓词