首页 文章
  • 0 votes
     answers
     views

    在Prolog中测试 . 如何运行单元测试来检查我的输出文件是否与我的文本文件匹配?

    我正在使用prolog(swipl)实现一个自然语言生成器 . 我有一个.txt测试文件,其中包含一些我应该能够以这种格式生成的短语: [goal,identify,type_object,animal,object,cat,event,ran away,when,[last,mont],where,[]] [which,cats,ran away,last,month,?] [goal,ide...
  • 12 votes
     answers
     views

    SWI-Prolog中的面向对象编程

    我在某处读到你可以将模块视为Prolog中的对象 . 我试图了解这个,如果它是一个很好的编码方式 . 如果我有两个文件,一个定义一个类狗,然后另一个使用这个类来制作两个狗对象 . :- module(dog, [ create_dog/4,bark/1 ]). create_dog(Name,Age,Type,Dog):- Dog = dog(name(Name),age(Ag...
  • 1 votes
     answers
     views

    仅在SWI-Prolog中的单个单元测试范围内声明真实的事实

    作为这个问题的一个例子,我有一个非常简单的Prolog文件 main.pl ,其中我定义了一些形状的颜色 . colour(circle, red). colour(triangle, red). colour(square, blue). 现在,我定义了一个谓词 same_colour/2 ,如果 S1 和 S2 是相同的颜色,则为真 . same_colour(S1, S2) :- ...
  • 0 votes
     answers
     views

    如何在BATCH模式下运行PROLOG脚本文件? (在Linux终端中)

    我正在尝试使用带有规则的PROLOG脚本文件在批处理模式下,(非交互模式) . 在 Ubuntu Linux 中使用 swi-prolog ,它在Prolog的交互模式下运行良好 . 但是如何在批处理模式下运行prolog? (不是交互模式) . 因此,目标是使用查询参数调用 swipl并看到结果作为终端的输出 . 理想的情况下,还可以在终端输出中看到每个输入查询的规则是"true&qu...
  • 0 votes
     answers
     views

    用swi prolog搜索静态事实的最快方法?

    是否有更快的方法来编译或索引大量事实以提高速度?我有大约30K链接形式的事实(groupid,id) 并尝试找到给定id的连接,但它确实很慢 . 我使用规则 connected(Id1,Id2) :- linked(Grp1,Id1), linked(Grp1,Id2), \+Id1=Id2. connected(Id1,Id2) :- connected(Id1,Id3...
  • 0 votes
     answers
     views

    Prolog DCG从字母数字字符构建/识别单词串

    因此,我正在使用Definite Clause Grammars在SWI-Prolog中为一些编程语言编写简单的解析器 . 如果输入字符串或文件对相关语言有效,则返回true;如果输入字符串或文件无效,则返回false . 在所有几乎所有语言中都有一个"identifier"谓词 . 在大多数语言中,标识符被定义为EBNF中的以下内容之一: letter { letter | ...
  • 2 votes
     answers
     views

    SWI-Prolog文件需要开始和结束字符吗?

    我是SWI-Prolog的新手,正在尝试一些教程 . 但是,我尝试通过命令行加载的每个文件都会收到2条错误消息 - 一条在开始时(运算符预期),另一条在结尾处(文件意外结束) . 文件保存在与我工作的目录相同的目录中 . 例如,我将此文件另存为kb2.pl listensToMusic(mia). happy(yolanda). playsAirGuitar(mia) :- listen...
  • 3 votes
     answers
     views

    制作适用于GNU和SWI的Prolog代码

    我意识到这将有限制,但有没有合理的方法在Prolog代码中放入条件指令,以便它在GNU或SWI中合理地工作?我在考虑至少最简单的情况,其中内置谓词如SWI中的 sumlist 和GNU中的 sum_list 在拼写中彼此不匹配 . 或者SWI有 assert 但GNU没有 . 所以有这样的东西会很好: :- if($SWI). SWI version of stuff :- else. GNU v...
  • 4 votes
     answers
     views

    SWI Prolog与GNU Prolog - SWI下的CLP(FD)问题

    我在Prolog中写了一个快速谓词,尝试了CLP(FD)及其解决方程组的能力 . problem(A, B) :- A-B #= 320, A #= 21*B. 当我在SWI中调用它时,我得到: ?- problem(A,B). 320+B#=A, 21*B#=A. 在GNU中,我得到了正确答案: | ?- problem(A,B). A = 336 B = 16 这里发生...
  • 2 votes
     answers
     views

    在OWL本体上的SWI-Prolog中执行SPARQL查询

    在从OWL / RDF文件加载本体之后,我想知道如何在SWI-Prolog中执行SPARQL查询 . 我发现可以通过sparql_query / 3执行查询,但它需要一个服务器 .
  • 0 votes
     answers
     views

    Swi Prolog编辑只显示错误,而不是真实

    假设我的知识库包含一个事实:事实(fact1) . 如果我知道提交查询事实(fact1) . 39 ?- fact(fact1). 40 ?- 它没有说什么,这相当于真实 . B / c如果错了,Prolog会回复错误: 38 ?- fact(foobar). false. 那么我怎样才能改变它以便我得到一个真实的 . ?
  • 1 votes
     answers
     views

    如何将文本文件转换为swi-prolog事实?

    我希望prolog读取用户上传的文本文件,将其转换为prolog事实并将其存储在知识库中 . 此文本文件应该是以下格式的学生成绩单 . 我是prolog的新手,因此,我不知道它是否可能因为文本文件有一些垃圾和重复数据,我只想采取它的某些部分 . Example: This is the text file Main Menu </cgi/regweb/stu_login.main_menu&...
  • 0 votes
     answers
     views

    如何回显Prolog在查询后返回的真/假值

    我想提出一个问题 . 我尝试使用exec函数将php连接到SWI-Prolog,我的努力成功了 . 我已经设法通过php查询prolog,我能够回应Prolog的答案 . 我想要做但却无法想象如何实现它,就是回应真/假prolog的回报 . 让 assume 我有一个简单的knowledge_base.pl文件,其中包含以下事实和规则: girl(erin). boy(john). likes(...
  • 1 votes
     answers
     views

    作为脚本运行prolog

    因此,我有一些Prolog代码可以对变量赋值进行建模,例如在编程语言中,并尝试查看它们是否彼此兼容 . 所以, assigned(X, X). and(P, Q) :- P, Q. or(P, Q) :- P. or(P, Q) :- Q. % and then we should test an expression like this: and(assigned(X, 5), assigne...
  • 2 votes
     answers
     views

    Java-Prolog:如何将参数传递给arity 2查询?

    我是Prolog和Java的初学者 . 我试图将我的Prolog程序与Java链接 . 我找到了怎么做here . 但是我不知道如何用arity 2将参数传递给Prolog查询 . 这是我的prolog程序的一部分: male(Jack). male(John). female(Jill). couple(Jack,Jill). parent(Jack,John). parent(Jill,Joh...
  • 7 votes
     answers
     views

    如何在Prolog中关闭“true”和“false”输出?

    我想用Prolog写一个基于文本的小型冒险游戏(这可能是一个愚蠢的想法,但我不在这里讨论) . 唯一的问题是我无法在屏幕上打印文本而不显示“true”和“false”值 . 例如,如果我尝试类似的东西: take(desk) :- write('This thing is way too heavy for me to carry!'). 其中 take 是一个地方谓词, desk 是我得到的一...

热门问题