所以我目前正在学习数据记录 . 我启动它并键入以下内容:
parent(john, michael).
并立即给出一个未定义的谓词错误 . 根据我的理解,这应该是在模拟数据库中定义关系的正确方法 . 怎么了?我在网上狩猎,什么都找不到 .
我正在使用没有GUI的Windows 64位版程序
您正在使用的数据记录系统的名称是什么? Datalog是一种语言的名称 . 不同的系统接受该语言的不同变体 . 有些人可能会要求您在使用之前声明谓词 .
正如Datalog _695683中所提到的那样,我一般都在寻找一种快速而肮脏的方式来学习数据目录,你也可以尝试使用"LogiQL"数据记录变体的在线解释器:https://repl.logicblox.com/ . (披露:我为制作LogiQL的公司工作 . )作为一个你好世界你可以尝试:
=> addblock 'parent("john", "michael").' Succesfully added block => print parent /-------------------\ | john | michael | \-------------------/
您可以在DES的用户手册中找到这些问题的答案,该手册位于发行版的./doc文件夹中,也可以从其网页下载 . 无论如何,你输入的是一个查询,也就是说,你并没有试图断言一个新的事实 . 如果要以交互方式断言事实,请使用命令/ assert,如下所示:
DES> /assert parent(john, michael) DES> parent(john,michael) { parent(john,michael) } Info: 1 tuple computed.
断言Datalog事实(以及规则)的另一种方法是将它们存储在一个文件中,比如parents.dl,并查阅它(注意事后的结束点):
parent.dl的内容:
parent(john,michael).
parent.dl的内容结束
咨询它:
DES> /consult parents Info: 1 rule consulted. DES> parent(john,michael) { parent(john,michael) } Info: 1 tuple computed.
请注意,查询询问系统是否从其数据库中推导出事实父(john,michael),它确实是推导出来的 . 查询的其他用途包括变量,如:
DES> parent(X,Y) { parent(john,michael) } Info: 1 tuple computed.
3 回答
您正在使用的数据记录系统的名称是什么? Datalog是一种语言的名称 . 不同的系统接受该语言的不同变体 . 有些人可能会要求您在使用之前声明谓词 .
正如Datalog _695683中所提到的那样,我一般都在寻找一种快速而肮脏的方式来学习数据目录,你也可以尝试使用"LogiQL"数据记录变体的在线解释器:https://repl.logicblox.com/ . (披露:我为制作LogiQL的公司工作 . )作为一个你好世界你可以尝试:
您可以在DES的用户手册中找到这些问题的答案,该手册位于发行版的./doc文件夹中,也可以从其网页下载 . 无论如何,你输入的是一个查询,也就是说,你并没有试图断言一个新的事实 . 如果要以交互方式断言事实,请使用命令/ assert,如下所示:
断言Datalog事实(以及规则)的另一种方法是将它们存储在一个文件中,比如parents.dl,并查阅它(注意事后的结束点):
parent.dl的内容:
parent.dl的内容结束
咨询它:
请注意,查询询问系统是否从其数据库中推导出事实父(john,michael),它确实是推导出来的 . 查询的其他用途包括变量,如: