Datalog的用处

2020年04月15日 21:05

如果在 tiddlywiki 里可以用 datalog 或是其他描述知识的语言,我能怎么用它呢?

其实一个 tiddler 就是一个 JSON-LD 对象,title 是 @id ,然后可以添加很多个字段。如果在里面用 datascript、N3 等描述语言,可能也就是把 title 看做 @graph 吧,然后可以在图里面加任意的四元组、三元组。

但是如果我在 TiddlyWiki 里描述知识了,它能怎么服务于我的生活、学习和开发呢?

在生活上,我以前设想过简单的场景:

查看引文:内裤管理系统

之前在文因互联,师从鲍老师了解了一些关于知识工程的知识后,我就急匆匆地想要做一些实践,想设计制造一个最简单的录入和利用知识的系统。可惜还是太难了,我花了很多时间折腾富文本编辑器,直到离职为止都还没有开发到推理这方面。

我希望能用比较自然的语言录入「今天穿了红色的那条内裤」等信息,然后系统自动统计我是不是该洗内裤了(因为我懒得手洗,是攒到脏内裤数量达到总内裤数的八成后再一次性丢洗衣机消毒洗净),如果没有提醒,就有可能内裤用罄。

当时我不知道有 TiddlyWiki,不然我就直接基于 TiddlyWiki 做 Demo 了,会快很多,因为 TW 已经基本拥有「录入知识」和「聚合数据」的功能了。而且基于自定义的 Widget,可以做到数据的双向绑定,可见即可编辑。

但是我暂时还想不到其他在生活上的用处。

如果服务于学习,TiddlyWiki 最大的用处是作为知识库,作为 Single-Source of Truth,然后导出到 Anki 里,利用Active RecallSpaced RepetitionSnT ConditionInterleaved Practice等方法来学会它们。

如果服务于开发,可能的确可以用一个 Graph 来记录某个项目里的计划(但已经有看板了)、debug 的心路历程、某个函数的用处(其实应该用注释,而不是把 TW 当文式编程工具)。但怎么对这些知识进行推理呢?是否会有一个类似 eslint 这样插件化的工具,来提供各种规则,匹配我录入的各种知识,发现一些有「坏味道」的行为习惯呢?但 eslint 我也从没有自己写过规则,那太耗时间了,规则都是来自于大公司(例如 palantir、Facebook)的开发者,而我没听说过推理机有什么规则市场。

Code
如果在 tiddlywiki 里可以用 datalog 或是其他描述知识的语言,我能怎么用它呢?

其实一个 tiddler 就是一个 JSON-LD 对象,title 是 @id ,然后可以添加很多个字段。如果在里面用 datascript、N3 等描述语言,可能也就是把 title 看做 @graph 吧,然后可以在图里面加任意的四元组、三元组。

但是如果我在 TiddlyWiki 里描述知识了,它能怎么服务于我的生活、学习和开发呢?

在生活上,我以前设想过简单的场景:

<<reuse-tiddler "内裤管理系统">>

但是我暂时还想不到其他在生活上的用处。

如果服务于学习,TiddlyWiki 最大的用处是作为知识库,作为 Single-Source of Truth,然后导出到 Anki 里,利用<$macrocall $name=列表转句子宏 text={{学习的规律}} />等方法来学会它们。

如果服务于开发,可能的确可以用一个 Graph 来记录某个项目里的计划(但已经有看板了)、debug 的心路历程、某个函数的用处(其实应该用注释,而不是把 TW 当文式编程工具)。但怎么对这些知识进行推理呢?是否会有一个类似 eslint 这样插件化的工具,来提供各种规则,匹配我录入的各种知识,发现一些有「坏味道」的行为习惯呢?但 eslint 我也从没有自己写过规则,那太耗时间了,规则都是来自于大公司(例如 palantir、Facebook)的开发者,而我没听说过推理机有什么规则市场。